У меня есть строка, которую я создаю, и мне нужно добавить несколько «\ 0» (нулевых) символов в строку.Между каждым нулевым символом находятся другие текстовые данные (только буквенно-цифровые символы ASCII).
Моя проблема заключается в том, что в J2SE, когда вы добавляете первый нулевой (\ 0), тогда Java, по-видимому, определяет, что это терминатор строки,(аналогично C ++) и игнорирует все остальные добавляемые данные.Ошибка не возникает, конечные данные просто игнорируются.Мне нужно форсировать дополнительные завершающие данные после нуля в строке.Я должен сделать это для устаревшей базы данных, которую я поддерживаю.
Я пытался закодировать / декодировать строку в надежде, что что-то вроде% 00 обманет интерпретацию поведения строки, но когда язакодировав строку, Java снова видит нулевой символ и удаляет все данные после первого нулевого.
Обновление: здесь приведен соответствующий фрагмент кода.Да, я пытаюсь использовать Strings
.Я собираюсь попробовать символы, но мне все еще нужно сохранить их в базе данных в виде строки, поэтому я подозреваю, что у меня возникнет та же проблема.
Некоторый фон.Я получаю данные через сообщение HTTP, которое имеет "\ n".Мне нужно удалить символы новой строки и заменить их на "\ 0".Метод "debug
" - это простой метод, который выполняет System.out.println
.
String[] arrLines = sValue.split("\n");
for(int k=0;k<arrLines.length;k++) {
if (0<k) {
sNewValue += "\0";
}
sNewValue+= arrLines[k];
debug("New value =" + sNewValue);
}
sNewValue, String, фиксируется в базе данных и должен выполняться как String.То, что я наблюдаю, когда я отображаю текущее значение sNewValue
после каждой итерации в консоли, выглядит примерно так:
input is value1 \ nValue2 \ nValue3 Выходные данные в консоли дают мне этот код
value1
value1
value1
Я ожидаю
value1
value1 value2
value1 value2 value3
с непечатаемым нулевым значением между value1, value2 и value3 соответственно.Обратите внимание, что значение, фактически сохраняемое обратно в базу данных, также является просто «value1».Так что проблема не только в отображении консоли.Данные после \ 0 игнорируются.