У меня есть строка, которую я создаю, и мне нужно добавить в строку несколько символов «\ 0» (null). Между каждым нулевым символом находятся другие текстовые данные (только буквенно-цифровые символы ASCII).
Моя проблема в том, что в J2SE, когда вы добавляете первый ноль (\ 0), java затем, кажется, определяет, что это признак конца строки (аналогично C ++), и игнорирует все другие добавляемые данные. Ошибка не возникает, конечные данные просто игнорируются. Мне нужно заставить дополнительные конечные данные после нуля в строке. Я должен сделать это для устаревшей базы данных, которую я поддерживаю.
Я попытался закодировать / декодировать строку в надежде, что что-то вроде% 00 может ввести в заблуждение интерпретацию поведения строки, но когда я перекодирую строку, Java снова видит нулевой символ и удаляет все данные после первый нуль.
Обновление: вот соответствующий фрагмент кода. Да, я пытаюсь использовать Строки
. Я собираюсь попробовать символы, но мне все равно нужно сохранить их в базе данных в виде строки, поэтому я подозреваю, что у меня возникнет та же проблема.
Немного предыстории.Я получаю данные через 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
с непечатаемым нулем между значением1, значением2 и значением3 соответственно. Обратите внимание, что значение, фактически сохраняемое обратно в базу данных, также является просто «значением1». Так что проблема не только в отображении консоли. Данные после \ 0 игнорируются.