- - PR -
byte[]をStringに変換したい。
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-11-05 21:10
UTF-16のbyte[]をStringに変換したいのですがうまくいきません。
outStr = new String(bytestr, "UTF-16"); のようにしてもなぜかShiftJISになってしまいます。 何が問題でしょうか? 以下のソースのように変換前後でファイルに出力して確認してみましたがやはり変換前のAAA.txtはUTF-16で変換後のBBB.txtはShiftJISです。 FileOutputStream os = new FileOutputStream("AAA.txt"); os.write(bytestr); os.close(); outStr = new String(bytestr , "UTF-16"); FileOutputStream os2 = new FileOutputStream("BBB.txt"); os2.write(outStr.getBytes()); os2.close(); | ||||
|
投稿日時: 2004-11-05 22:10
確認していませんが以下のコードでどうでしょうか?
ストリームではなくReader Writerでラップします FileInputStream fis=new FileInputStream(srcfile); FileOutputStream fos=new FileOutputStream(outfile); InputStreamReader idr=new InputStreamReader(fis,srcEncodeing); OutputStreamWrite osw=new OutputStreamWriter(fos,destEncodeing); | ||||
|
投稿日時: 2004-11-05 22:18
単にプラットフォームのデフォルト文字セットがShft-JISだからではないかと。
java.lang.String#getBytes() *プラットフォームのデフォルト文字セットを使用してこの String をバイトシーケンスに 符号化し、結果を新規バイト配列に格納します。 public byte[] getBytes(String charsetName) 上記の方のメソッドを利用して文字セットを指定すれば上手くいくと思いますよ。 | ||||
|
投稿日時: 2004-11-08 10:08
お返事ありがとうございます。
>確認していませんが以下のコードでどうでしょうか? >ストリームではなくReader Writerでラップします > やりたいことはファイルを読んだり書いたりするのではなくバイト配列をストリング型に変換したいのです。 >public byte[] getBytes(String charsetName) >上記の方のメソッドを利用して文字セットを指定すれば上手くいくと思いますよ > すみません、よくおっしゃっている意味が分からないのですが、getBytes()ってストリングからバイト配列を取得するメソッドですよね? それとは逆でバイト配列からストリング型に変換したいのです。 | ||||
|
投稿日時: 2004-11-08 10:22
こんにちは。
ですから、ファイルに書き出そうとしてgetBytes()した時点でデフォルトの文字コードであるShiftJISに変換されているとみなさんはおっしゃってるのです。わかりますか? | ||||
|
投稿日時: 2004-11-08 11:55
お返事ありがとうございます。
>ですから、ファイルに書き出そうとしてgetBytes()した時点でデフォルトの文字コードである>ShiftJISに変換されているとみなさんはおっしゃってるのです。わかりますか? > そういうことでしたか。ファイルに落とすプログラムのほうがおかしかったんですね。 ありがとうございます。失礼いたしました。 |
1