に文字列を変換する方法を、私はバイトに変換しています: byte[] nameByteArray = cityName.getBytes();
がバイト文字列を変換するためのバック
が戻って変換するには、私がやった:明らかに動作しませんString retrievedString = new String(nameByteArray);
を。どうすれば元に戻すことができますか?
に文字列を変換する方法を、私はバイトに変換しています: byte[] nameByteArray = cityName.getBytes();
がバイト文字列を変換するためのバック
が戻って変換するには、私がやった:明らかに動作しませんString retrievedString = new String(nameByteArray);
を。どうすれば元に戻すことができますか?
元の都市名にはどのような文字が含まれていますか?明らかに動作しません
byte[] nameByteArray = cityName.getBytes("UTF-8");
String retrievedString = new String(nameByteArray, "UTF-8");
getBytes()とString(byte [] byteArray)の両方が、どちらの場合でも明らかに同じデフォルトのcharsetを使用しているので、これは問題ではありません。 –
+1、すべて説明します。 "What characters" = "実際の文字エンコーディングは何ですか?" –
@Jan:デフォルトの文字エンコーディングが既存のテキストのすべての文字をエンコードできる場合にのみ機能します。 –
:このようなUTF-8バージョンをお試しください。
実際、それはあなたがそれを行う方法です。間違っている可能性があるのは、プラットフォームのデフォルトのエンコーディングを暗黙的に使用していることです。これは、システムによって異なる可能性があり、文字列内のすべての文字を表すことができない場合があります。
ソリューションは、明示的にUTF-8などのすべてのcharactsを表すことができるエンコーディングを使用することです:
byte[] nameByteArray = cityName.getBytes("UTF-8");
String retrievedString = new String(nameByteArray, "UTF-8");
あなたは(新しい文字列 'でたcharsetNameを指定する必要があります)'、例えば '新しいString(バイト[]、 "utf-8");元の文字列と同じ文字セットを使用します。 – Augusto
これはあなたがそれを元に戻す方法です。例:http://ideone.com/TDb7E何がうまくいかないか説明できますか? –
バイトを文字列に変換する際にエンコーディングを指定する必要がある理由を理解するには、[canonical essay](http://www.joelonsoftware.com/articles/Unicode.html)をお読みください。 – dm3