- PR -

byte[]をStringに変換したい。

1
投稿者投稿内容
hiro-ta
ベテラン
会議室デビュー日: 2003/09/03
投稿数: 79
投稿日時: 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();
sakura
会議室デビュー日: 2004/11/03
投稿数: 3
投稿日時: 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);
takamaro
大ベテラン
会議室デビュー日: 2004/10/12
投稿数: 100
投稿日時: 2004-11-05 22:18
単にプラットフォームのデフォルト文字セットがShft-JISだからではないかと。

java.lang.String#getBytes()
*プラットフォームのデフォルト文字セットを使用してこの String をバイトシーケンスに
符号化し、結果を新規バイト配列に格納します。

public byte[] getBytes(String charsetName)

上記の方のメソッドを利用して文字セットを指定すれば上手くいくと思いますよ。
hiro-ta
ベテラン
会議室デビュー日: 2003/09/03
投稿数: 79
投稿日時: 2004-11-08 10:08
お返事ありがとうございます。

>確認していませんが以下のコードでどうでしょうか?
>ストリームではなくReader Writerでラップします
>
やりたいことはファイルを読んだり書いたりするのではなくバイト配列をストリング型に変換したいのです。

>public byte[] getBytes(String charsetName)
>上記の方のメソッドを利用して文字セットを指定すれば上手くいくと思いますよ
>
すみません、よくおっしゃっている意味が分からないのですが、getBytes()ってストリングからバイト配列を取得するメソッドですよね?
それとは逆でバイト配列からストリング型に変換したいのです。


okutin
ベテラン
会議室デビュー日: 2003/12/11
投稿数: 98
お住まい・勤務地: 広島
投稿日時: 2004-11-08 10:22
こんにちは。

引用:


hiro-taさんの書き込み (2004-11-08 10:08) より:
すみません、よくおっしゃっている意味が分からないのですが、getBytes()ってストリングからバイト配列を取得するメソッドですよね?
それとは逆でバイト配列からストリング型に変換したいのです。




ですから、ファイルに書き出そうとしてgetBytes()した時点でデフォルトの文字コードであるShiftJISに変換されているとみなさんはおっしゃってるのです。わかりますか?
hiro-ta
ベテラン
会議室デビュー日: 2003/09/03
投稿数: 79
投稿日時: 2004-11-08 11:55
お返事ありがとうございます。

>ですから、ファイルに書き出そうとしてgetBytes()した時点でデフォルトの文字コードである>ShiftJISに変換されているとみなさんはおっしゃってるのです。わかりますか?
>
そういうことでしたか。ファイルに落とすプログラムのほうがおかしかったんですね。
ありがとうございます。失礼いたしました。
1

スキルアップ/キャリアアップ(JOB@IT)