0

UTF-8形式でデータを出力できません。入力ファイルから読み取っているデータに英国ポンド記号(16進C2A3)が含まれているテストケースを設定しています。Linuxで書き出すと、有効なUTF-8(C2A3)が得られます。Windowsでは、HEXA3しか入手できません。

PrintStreamを使用して、文字セットを「UTF-8」として指定してみました。運がない。最終的にDataOutputStreamを試すまで、運が悪かった他の多くのストリームを試しました。バイト配列をパラメータとする「write()」メソッドを使用しました。文字列を出力する必要があったので、「myString.getBytes( "UTF-8")」と呼びました。

私は次のようなコードになりました:

dataOutputStream.write(myString.getBytes( "UTF-8"));

これは両方のシステムで正しく機能します。Windows7およびLinux。

私はこれがなぜうまくいったのかを理解し、私の解決策が正しいと確信しようとしています。それはシステムロケールに帰着しますか?Linuxのデフォルトはen_US.utf-8です。Windowsで指定できるのは「en_US」だけでした。それで、出力ストリームが文字列からデータを取得しようとしたとき、文字列はロケールに基づいてデータを送信していましたか?

4

1 に答える 1

0

または、FileOutputStream を使用していて、バイナリを書き込む文字エンコーディングまたは DataOutputStream が重要です。あなたも調査を行う必要がありますが、ここを見てください

于 2012-09-03T21:46:54.070 に答える