Java:当字符串包含空字符时,如何输出字符串?
我的代码使用XMLwriter和XMLObjectOutputStream来处理字符串 关键是字符串可能包含字符零(\0)。如果我使用Java:当字符串包含空字符时,如何输出字符串?,java,string,Java,String,我的代码使用XMLwriter和XMLObjectOutputStream来处理字符串 关键是字符串可能包含字符零(\0)。如果我使用string.replace(“\0”和“”)则不会报告任何错误。 如果不使用string.replace(“\0”和“”),它将报告“输出中不允许使用零字符” 但是,我需要保留原始字符串,以便在输出到txt文件时使用它。在这种情况下,如何处理字符串以保留\0并同时使用XMLwriter 字符串如下所示: NULNULSTX &The story of
string.replace(“\0”和“”)
则不会报告任何错误。
如果不使用string.replace(“\0”和“”)
,它将报告“输出中不允许使用零字符”
但是,我需要保留原始字符串,以便在输出到txt文件时使用它。在这种情况下,如何处理字符串以保留\0并同时使用XMLwriter
字符串如下所示:
NULNULSTX &The story of Florida
(在Notpad++中打开显示NUL,在txt中打开仅在NUL中显示空格)
以下是错误信息:
ERROR (SelectorManager.run): java.lang.IllegalStateException: character zero is not allowed in output
at org.xmlpull.mxp1_serializer.MXSerializer.writeAttributeValue(MXSerializer.java:849)
at org.xmlpull.mxp1_serializer.MXSerializer.attribute(MXSerializer.java:624)
此外,如果字符串无法从null terminate中转义,我们是否可以找到另一种方法来替换字符串(例如char、array…)以输出原始信息?与其将“\0”替换为空字符串,不如尝试使用转义字符来转义它:
string.replace("\0", "\\0")
我找到了解决方案,似乎我们可以在java.commons.lang3中使用StringEscapeUtils
StringEscapeUtils.escapeJava(javaString)
StringEscapeUtils.unescapeJava(StringEscapeUtils.escapeJava(javaString)
它可以在不违反XML要求的情况下对字符串进行编码。将字符串输出到txt文件后,将在字符串中显示\0,该值与原始值不同(null)。关键是需要保持sting与以前一样…正如@CoronA评论的那样,用一个例子来说明哪个字符串失败,以及您希望该字符串的输出是什么,会更容易一些。我编辑了原始文本,请查看详细信息。谢谢如果您只需要可读,为什么不将“\0”替换为“NUL”?您丢失了实际字符,但文本在任何编辑器中都是相同的。关键是字符串需要与以前一样保留,并将在下一步中用于执行某些操作…因此我不能用nul替换\0…文本中的
是否存在相同的问题?那么你的问题是逃跑。您必须转义字符串才能与xml兼容。我对