Java/文字コードメモ4
Java / 文字コードメモ4
id: 1317 所有者: msakamoto-sf
作成日: 2014-09-15 20:15:26
カテゴリ: Java
Java/文字コードメモ3 に続いたメモ4.
Javaでバイナリデータを文字列として処理する、つまり、バイナリデータ中のASCII文字だけでindexOf()や正規表現が動けば良い場合、byte配列をどのエンコーディングでStringにするのが適切か?
個人的にはISO-8859-1が、0x00 - 0xFFまでひと通り1バイト=1文字でマッピングがされているため、一番安全な解に思える。
重要なのが制御文字や0x80 - 0xFFまでに1バイト=1文字でマッピングされている点。これが無いと、0x80-0xFFのバイト配列→文字列→バイト配列→文字列、と何回か変形した場合に、元に戻らない。
サンプルコード:
参考:
トピックその2:String型とbyte配列の変換って、スレッドセーフか?
基本的に大丈夫だと思うが・・・
なんか、ブロッキングでパフォーマンスが~とかいう話が2006年ごろからまれにあるっぽい。
- Issue 6398 - google-web-toolkit - Avoid Java bottleneck by using explicit Charset for byte[]<->String conversions - GWT - Google Project Hosting
- The Mysteries of Java Character Set Performance - 1500 Word MTU
- Thread blocking on java.nio.charset.CoderResult | Oracle Community
- CoderResult (Java Platform SE 7 )
プレーンテキスト形式でダウンロード
現在のバージョン : 2
更新者: msakamoto-sf
更新日: 2014-09-15 20:56:07
md5:00621369e4094a23e915826e1529bf93
sha1:e8e34365026eb14ac39efe8716002d803e6f2e46
コメント