У меня было требование, когда мне пришлось писать текст в потоке вывода и читать этот текст где-то в другом месте с использованием входного потока.Байт для строки | Java
Теперь, чтобы написать вывод, я преобразовываю его в массив байтов, используя string.getByte(). Теперь при чтении строка формируется с использованием конструктора 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 (данных), и все, что мне нужно было сделать, это использовать URLDecoder.decode (данные), чтобы вернуть мои исходные данные. – mawia