我在 JAVA 中使用 UTF-8 编写 xml 文件时遇到问题。问题:我有一个文件名,其中包含一个 interpunct(middot)(·)。当我尝试在 xml 标记中写入文件名时,使用 java 代码我得到一些垃圾号码,如文件名中的 而不是·
OutputStreamWriter osw =new OutputStreamWriter(file_output_stream,"UTF8");
以上是我用来编写xmlfile的java代码。谁能告诉我为什么要理解和解决问题?提前致谢
Java 源默认为 UTF-16。如果您的角色不在其中,请使用转义:
String a = "\u00b7";
或者告诉您的编译器使用 UTF-8 并简单地将其按原样写入代码。
该字符是 ASCII 183(十进制),因此您需要将字符转义为·
. 这是一个演示:如果我输入"·"
这个答案,我得到“·”
浏览器正在打印你的字符,因为这个网页是 XML。
有一些实用方法可以为您执行此操作,例如apache commons-lang库的StringEscapeUtils.escapeXml()
方法,该方法将正确且安全地转义整个输入。
一般来说,在任何地方都使用 UTF-8 是个好主意。
编辑器必须知道源代码是 UTF-8。您可以使用可以处理多种编码的免费程序员编辑器 JEdit。
javac编译器必须知道 java 源代码是 UTF-8 格式。在 Java 中,您可以使用@OndraŽižka 的解决方案。
这会在您的 IDE 中进行两个设置。
不要尝试手动创建 XML。为此目的使用图书馆。您只是触及了一堆会破坏手工解决方案的特殊情况的表面。
使用核心 Java 类的一种方法是创建一个 DOM,然后使用写入到StreamResult
. (如果您的文档很大,您可以通过驱动 SAX 事件处理程序来执行类似的操作。)
有许多第三方库可以帮助您非常轻松地做同样的事情。