У меня было требование, когда мне нужно было написать некоторый текст в выходной поток и прочитать этот текст в другом месте, используя входной поток.
Теперь, чтобы записать вывод, я преобразую его в байтовый массивиспользуя 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");
Но, как и следовало ожидать, это усугубило ситуацию, так как яслучайным образом пытался использовать другое имя набора символов.
Надеюсь, вы притормозите меня этим сглазом. Можете ли вы указать, куда я иду глупо в этой схеме?
Большое спасибо заранее!:)