我有一个字符串,需要添加多个"\0"(空字符)到字符串中。在每个空字符之间,都有其他文本数据(只包含ASCII字母数字字符)。
我的问题是,在J2SE中添加第一个null字符(\0)时,Java似乎会确定它是字符串终止符(类似于C ++),并忽略所有其他附加的数据。不会引发错误,但后面的数据被忽略了。我需要强制在字符串中的空字符后面添加其他数据。这是我支持的遗留数据库必须这样做。
我尝试过对字符串进行编码/解码,希望像%00这样的东西会欺骗字符串行为的解释,但当我重新编码字符串时,Java再次看到空字符,并删除第一个空字符后的所有数据。
更新:这里是相关的代码片段。是的,我正在尝试使用Strings。我打算尝试使用char,但我仍然必须将其保存为字符串存储到数据库中,所以我怀疑我最终会遇到相同的问题。
一些背景信息。我通过HTTP post接收具有"\n"的数据。我需要删除换行符并用"\0"替换它们。"
我的问题是,在J2SE中添加第一个null字符(\0)时,Java似乎会确定它是字符串终止符(类似于C ++),并忽略所有其他附加的数据。不会引发错误,但后面的数据被忽略了。我需要强制在字符串中的空字符后面添加其他数据。这是我支持的遗留数据库必须这样做。
我尝试过对字符串进行编码/解码,希望像%00这样的东西会欺骗字符串行为的解释,但当我重新编码字符串时,Java再次看到空字符,并删除第一个空字符后的所有数据。
更新:这里是相关的代码片段。是的,我正在尝试使用Strings。我打算尝试使用char,但我仍然必须将其保存为字符串存储到数据库中,所以我怀疑我最终会遇到相同的问题。
一些背景信息。我通过HTTP post接收具有"\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是一个字符串,被提交到数据库中并需要以字符串形式完成。在每次迭代后,当我在控制台上显示sNewValue
的当前值时,我观察到的情况如下:
输入值为value1\nValue2\nValue3 从这段代码输出的控制台信息如下:
value1
value1
value1
我期望
value1
value1 value2
value1 value2 value3
在value1、value2和value3之间有不可打印的空字符\0。需要注意的是,实际保存回数据库的值也只有"value1"。因此,这不仅仅是控制台显示问题,\0后面的数据被忽略了。
null
值,Java不使用ASCII字符,而是使用Unicode。 - Lion