出力ストリームにテキストを書き、入力ストリームを使用してそのテキストを別の場所に戻さなければならないという要件がありました。バイトから文字列へ| Java
出力を書き込むために、string.getByte()を使用してバイト配列に変換しています。読み込み中、stringはコンストラクタString(byte [])を使って形成されます。
ここでの質問は、読んだ文字列が私が見たいと思ったものではないということです。すべての英数字がそのまま読み込まれますが、書かれた文字列の他の特殊文字の場合は、ASCII値の前に%記号が表示されます。この
private stringToByte(){
String data="\"X=Y;Z=A;B=C;\""
byte[] byteArray=data.getByte();
String readData=new String(byteArray);
System.out.println("data:"+readData);
}
のような文字列、何かをバイト配列に文字列を変換して再構築などの
も、最も世俗的なことは、同じ結果を生産しています。 は、今これは
data:%22X=Y%3BZ=A%3BB=C%3B%22
のように見えた後に生成取得された文字列は、今私の最初の仮定は、エンコーディングがデフォルトの文字セットを使用して行われているので、それがエンコードされなければならないということでした。しかし、この動作は同じJVM内の同じマシン上でさえ明らかです。
私はそれが私がランダムに異なる文字セットの名前をしようとしていたとして、それが状況を悪化させ、持っていなければならないとして、
String readData=new String(byteArray,"diffent character set name");
を使用しかしでヒットし、トレイルの道を進んでみました。
うまくいけば、あなたは私のジンクスにブレーキをかけます。私はこのスキームでどこが愚かなのかを指摘できますか?
多くの方々に感謝します。 :)
ありがとう、Durandal!間違いなく多くのことが起こっていました。そして、私はそれらが見えないほど盲目でした! URLEncoder.encode(data)を使用して文字列がエンコードされていました。元のデータを取得するためにURLDecoder.decode(data)を使用するだけでした。 – mawia