У меня есть строка cityName, которую я расшифровал в байты следующим образом:
cityName
byte[] cityBytes = cityName.getBytes("UTF-8");
... и где-то хранил байты. Когда я получаю эти байты, как я могу декодировать их обратно в строку?
Используйте конструктор String(byte[], Charset) или String(byte[], String).
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"); }
Попробуйте это: http://docs.oracle.com/javase/6/docs/api/java/lang/String.html
String(byte[] bytes, String charsetName)
String s = new String(cityByte, "UTF-8");
Как это:
String cityName = new String(cityByte,"UTF-8");
Класс String имеет несколько конструкторов, которые принимают массив байтов, включая , один из которых принимает массив байтов, и строковое представление кодировки и другого, которыйберет объект Charset .Существуют также конструкторы, которые принимают смещение и длину строки в качестве аргументов, если строка является только небольшим разделом байтового массива.