トップ «前の日記(2011/09/06 (火) ) 最新 次の日記(2011/09/08 (木) )» 編集 RSS feed

HsbtDiary


2011/09/07 (水) [長年日記]

[ruby][tDiary] tDiary-3.1.0.20110907

3.1.0.20110906 で入れたコードの中に

if String.method_defined?(:encode)
  Encoding::Converter.new('UTF-16', 'UTF-8')
end

というのがあって、これは 1.9.3 以降では問題無いけど、1.9.2 以前ではエラーとなるのであった。何が問題かわかる人は挙手。

答えは UTF-16 という encoding は存在しなくて、UTF-16BEかUTF-16LEを指定しなければならない。1.9.3以降ではBOMを見てそれを自動判別してくれる(んだっけ? n0kadaの話をぐだっと聞いていたらこんな感じだった)のでそれを指定しなくてもエラーにはならないそうだ。でも、これを省略する男の人って…ということなので、ちゃんと指定しましょう。

そんなわけで、tDiary-3.1.0.20110907では上記の UTF-16 を UTF-16BE と明記するのと、またまた Secure モード対策の一つとしてObject.untrust を骨抜きにする workaround の二つが導入されている。後者の方はこれでいいんだっけ?