2011年10月4日19:02 Kazuhiko <kazuhiko / fdiary.net>: > えーと、さらに調査の結果、encodingによっては上記のワークアラウンドでうま > く動かないことがわかりました。 > > 例えば、 > > $ ruby1.9 -ve 'a="あ";"あ".encode("euc-jp"); $SAFE=4; a.encode("euc-jp")' > ruby 1.9.3dev (2011-09-23 revision 33323) [x86_64-linux] > > ↑これは動きますが、 > > $ ruby1.9 -ve 'a="あ";"".encode("euc-jp"); $SAFE=4; a.encode("euc-jp")' > ruby 1.9.3dev (2011-09-23 revision 33323) [x86_64-linux] > -e:1:in `encode': Insecure operation - encode (SecurityError) > from -e:1:in `<main>' > > ↑これは動きません。 > > この「あらかじめロードする」技が、対象となるStringと関係なく動くわけでは > ないとなれば、残念ながらワークアラウンドになりません。 空文字や ASCII 文字列はエンコーディング変換を要しないので変換ライブラリをロードしません。 なので、空文字では workaround にはなりません。 "\uFEFF".encode(enc) rescue nil などとすれば任意のエンコーディングでいけるはずです。 -- NARUSE, Yui <naruse / airemix.jp>