「kconv」を含む日記 RSS

はてなキーワード: kconvとは

2017-05-30

BASP21で受信したメール添付ファイル名などが文字化けする問題対処ポイント

今時BASP21 DLLフリー版)でメール受信してどうのこうので困ってる人が世の中にどのくらいいるかどうかわからないけど、今日嵌ってググってもまともな答えが出てこなくて途方にくれたのでポイントメモっておく。

問題と原因

BASP21 DLLのRcvMailメソッドPOP3サーバから受信してReadMailメソッドメールの内容を取得すると、一部のメール送信者や添付ファイル名が文字化けして正常に取得できない。これはBASP21 DLLのReadMailメソッド最近普通に送信されるUTF-8メール対応していないため。

対処

RcvMailで受信したファイルをReadMailで読み込む前に直接開き、Base64エンコードされたUTF-8文字があったらデコードしてJISに変換してBase64エンコードして保存する。その処理したファイルをReadMailで取り扱うようにする。全部BASP21の機能でできる。

落とし穴

BASP21のKconvメソッドの第1引数のinstrに文字列を渡せるのはUnicode UCS-2のみの場合だけらしく、UTF-8文字列を渡しても正常に動作しない。なので、一旦テンポラリファイルに書き出しKconvFileメソッド使用して変換を行う必要がある。っていまドキュメント眺めてたら文字列バイト配列にするByteArrayというメソッドがあるみたいなのでこれをを使えばできるかもしれない。けどもう正直いじりたくないよ…。

2007-10-20

http://anond.hatelabo.jp/20071019153453

よもや、レスがついてるとは思わなかった。

興味を持ってもらえてサンクスです。

entry = diary.entry('20070712231804')

エントリー指定してたからなんなんだろうと思って。

editもできるってことなのかな?

書き込んだあとの編集機能はいまんとこなし。

上記は指定したidエントリを引っ張ってくる。

# get entry from id
entry = diary.entry('20070712231804')

# puts entry title
puts entry.title

# puts entry content
puts entry.content

で、そもそもRubyに詳しくない自分からするとちゃんとした使い方がそれでもわからない。

バカでごめんねなんだけど、どうやって使えばいいの?

たとえば、エントリタイトル一覧(1ページ目だけだけど)を出力するなら

diary = Masuda::Diary.new

diary.entries do |entry|
  puts entry.title
end

こんな感じかな。

新しいエントリを登録するなら

diary = Masuda::Diary.new

diary.login('my_id', 'my_pass')
diary.post('koko wa title ne', <<EOS)
koko ni kizi no honbun wo kaku
EOS

とか。

ずらーっと増田らしきものを読み込む。

そりゃそうだわなと思いながら文字化けの山。

文字化けなのは、たぶん増田エントリ(UTF-8)をそのまんま取得しているせいだと思う。

なんでスクリプトを実行するときにフィルタを通すとか

~$ ruby hoge.rb | nkf -Ws

出力するときにSJISに変換するとか。

require 'rubygems'
require 'masuda'
require 'kconv'

diary = Masuda::Diary.new
diary.entries.each do |entry|
  puts entry.title.tosjis
  puts entry.content.tosjis
end

あと

session[:diary] = diary.raw

diary = Masuda::Diary.restore(session[:diary])

の...って何でしょうか??

Masuda::Diary#rawインスタンスシリアライズするメソッド。

ログイン済みのインスタンスシリアライズしてセッションにつっこんどいて、次のリクエストでも使いまわすとか。

わかりづらい文章で申し訳ない。

 
アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん