お勉強 :  謎の呪文 =?UTF-8?b?  

仕事中、友人が妙な文字列が入ったファイルを持ってきました。
「=?UTF-8?b?」から始まる文字列がものすごい行入っていて、
いわく「何かのメーラーでまとめて書き出してみたが、文字
コードがおかしいのか読めなくなった」そうな。

眺めて2分くらいで、最後の?以降に続く文字がASCIIコード
で表示できる文字ばっかりなのに気付いて、BASE64か?
と思ってPHPで読ませて base64_decode してみると確かに
文字コードみたいなものが復元できました。

ただ、もともとのファイルはSJISでマルチバイト文字が記載
されていて、一方このエンコードされた部分はUTF-8らしい。
仕方ないので、前処理として mb_convert_encoding で
SJIS→UTF-8に変換してから処理してみる。

さらに substr_replace という関数があることに初めて気付き、
ある部分を特定文字列に置換という面倒なことを一度に
やってもらい、目的の文字列をUTF-8で得ることが出来ました。

とりあえず友人からの相談事はこれで解決できたのですが、
あとで調べなおしてみるとメールのタイトルなんかで使う
書式らしく、RFCで決められたフォーマットなのだそうな。
しかも、PHPにも imap_utf8 という関数でこれを一気に
デコードできたのに( ゚д゚)

でも、元ファイルは1行のバイト数制限があったのか、
変なところで切れていて、?= で終わっていない箇所も
多々あったので、処理を自分で書いてしまって結果
的に正解だったようです。

さて、今晩の体重は 74.7kg でした。

[ 2015/11/24 21:55 ] お勉強 | TB(0) | CM(0)
コメントの投稿








管理者にだけ表示を許可する