String#getBytes()の挙動が怪しい
何ですかこれは。
"あ".getBytes("iso-2022-jp");
これだけでjava.nio.BufferOverflowExceptionが発生するのですが。
"ああ".getBytes("iso-2022-jp");
"A".getBytes("iso-2022-jp");
これらは問題ありません。マルチバイト1文字がダメなようです。JavaMail関係のプログラムで、なんだか挙動が怪しいと思って調べてみたら判明した次第です。
ググってみたら、すぐにヒットしました。かなり前からあった問題のようです。
- JVM1.4.2-1.4.2_03ではISO2022_JPのコンバータに問題がある @ Javaの憂鬱
- No.1276 Re[10]:"iso-2022-jp"+"quoted-printable" @ 書籍「JavaMail完全解説」サポート掲示板
JDK1.5では直っているらしいですが・・・来週リリースなのに今さらVMのバージョン変更はできませんよー。
回避策を検討中。マルチバイト1文字の場合は〜〜〜というロジックを組まねばならないのでしょうか。いやだなあ。