Преобразовать строку в байты и обратно - PullRequest
2 голосов
/ 05 декабря 2011

У меня есть строка cityName, которую я расшифровал в байты следующим образом:

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

... и где-то хранил байты. Когда я получаю эти байты, как я могу декодировать их обратно в строку?

Ответы [ 5 ]

6 голосов
/ 05 декабря 2011

Используйте конструктор String(byte[], Charset) или String(byte[], String).

byte[] rawBytes = /* whatevs */

try
{
    String decoded = new String(rawBytes, Charset.forName("UTF-8"));
    // or
    String decoded = new String(rawBytes, "UTF-8");
    // best, if you're using Java 7 (thanks to @ColinD):
    String decoded = new String(rawBytes, StandardCharsets.UTF_8);
}
catch (UnsupportedEncodingException e)
{
    // see http://stackoverflow.com/a/6030187/139010
    throw new AssertionError("UTF-8 not supported");
}
0 голосов
/ 05 декабря 2011

Попробуйте это: http://docs.oracle.com/javase/6/docs/api/java/lang/String.html

String(byte[] bytes, String charsetName) 
0 голосов
/ 05 декабря 2011

String s = new String(cityByte, "UTF-8");

0 голосов
/ 05 декабря 2011

Как это:

String cityName = new String(cityByte,"UTF-8");
0 голосов
/ 05 декабря 2011

Класс String имеет несколько конструкторов, которые принимают массив байтов, включая , один из которых принимает массив байтов, и строковое представление кодировки и другого, которыйберет объект Charset .Существуют также конструкторы, которые принимают смещение и длину строки в качестве аргументов, если строка является только небольшим разделом байтового массива.

...