2011-09-13 10 views
5

に文字列を変換する方法を、私はバイトに変換しています: byte[] nameByteArray = cityName.getBytes();がバイト文字列を変換するためのバック

が戻って変換するには、私がやった:明らかに動作しませんString retrievedString = new String(nameByteArray);を。どうすれば元に戻すことができますか?

+1

あなたは(新しい文字列 'でたcharsetNameを指定する必要があります)'、例えば '新しいString(バイト[]、 "utf-8");元の文字列と同じ文字セットを使用します。 – Augusto

+1

これはあなたがそれを元に戻す方法です。例:http://ideone.com/TDb7E何がうまくいかないか説明できますか? –

+1

バイトを文字列に変換する際にエンコーディングを指定する必要がある理由を理解するには、[canonical essay](http://www.joelonsoftware.com/articles/Unicode.html)をお読みください。 – dm3

答えて

9

元の都市名にはどのような文字が含まれていますか?明らかに動作しません

byte[] nameByteArray = cityName.getBytes("UTF-8"); 
String retrievedString = new String(nameByteArray, "UTF-8"); 
+0

getBytes()とString(byte [] byteArray)の両方が、どちらの場合でも明らかに同じデフォルトのcharsetを使用しているので、これは問題ではありません。 –

+0

+1、すべて説明します。 "What characters" = "実際の文字エンコーディングは何ですか?" –

+2

@Jan:デフォルトの文字エンコーディングが既存のテキストのすべての文字をエンコードできる場合にのみ機能します。 –

5

:このようなUTF-8バージョンをお試しください。

実際、それはあなたがそれを行う方法です。間違っている可能性があるのは、プラットフォームのデフォルトのエンコーディングを暗黙的に使用していることです。これは、システムによって異なる可能性があり、文字列内のすべての文字を表すことができない場合があります。

ソリューションは、明示的にUTF-8などのすべてのcharactsを表すことができるエンコーディングを使用することです:

byte[] nameByteArray = cityName.getBytes("UTF-8"); 

String retrievedString = new String(nameByteArray, "UTF-8"); 
関連する問題