- 締切済み
EUC_JPの文字化け
指定された文字列(String型)を以下の様にバイト配列で保持し、 byte[] work = "指定文字列".getBytes(encoding); そのバイト配列を使用し、再度、以下の様にStringを生成します。 new String(work, encoding); (作成したプログラムを添付したいのですが、文字数の関係で割愛します。) 指定文字列は機種依存文字(丸数字等)にします。 この時、encodingにMS932、UTF-8等を指定した場合は問題なく元の文字列が 取得できますが、EUC_JPを指定すると、?に文字化けを起こします。 調査すると、getBytesでbyte配列を取得した時点で既に変換不良を起こしていました。 (丸数字全てが0x3fになっていました。期待していたコード、というか本来は、0xADA1~0xADB4のはずです。) そこでStringクラスのgetBytesメソッドをオーバーライドしちゃえという、甘い考えが浮かび、 javaのソースコードでString.javaを見ましたが、結局のところ、どこでコード変換を行っているのか よくわかりませんでした。 そこで質問です。 1)これはJDKのバグなのですか? 2)こんな経験がある。あるいはこういう対処をした。というかた、おりましたら、 参考URLでも構いませんが教えてください。 以上、よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- run34ricky
- ベストアンサー率64% (38/59)
回答No.1
お礼
お礼が遅くなりました。やはり、それしかないのですね。ありがとうございました。