0

我在 JAVA 中使用 UTF-8 编写 xml 文件时遇到问题。问题:我有一个文件名,其中包含一个 interpunct(middot)(·)。当我尝试在 xml 标记中写入文件名时,使用 java 代码我得到一些垃圾号码,如文件名中的  而不是·

OutputStreamWriter osw =new OutputStreamWriter(file_output_stream,"UTF8");

以上是我用来编写xmlfile的java代码。谁能告诉我为什么要理解和解决问题?提前致谢

4

4 回答 4

2

Java 源默认为 UTF-16。如果您的角色不在其中,请使用转义:

String a = "\u00b7";

或者告诉您的编译器使用 UTF-8 并简单地将其按原样写入代码。

于 2012-07-04T13:44:25.733 回答
1

该字符是 ASCII 183(十进制),因此您需要将字符转义为·. 这是一个演示:如果我输入"·"这个答案,我得到“·”
浏览器正在打印你的字符,因为这个网页是 XML。

有一些实用方法可以为您执行此操作,例如apache commons-lang库的StringEscapeUtils.escapeXml()方法,该方法将正确且安全地转义整个输入。

于 2012-07-04T13:41:53.953 回答
0

一般来说,在任何地方都使用 UTF-8 是个好主意。

编辑器必须知道源代码是 UTF-8。您可以使用可以处理多种编码的免费程序员编辑器 JEdit。

javac编译器必须知道 java 源代码是 UTF-8 格式。在 Java 中,您可以使用@OndraŽižka 的解决方案。

这会在您的 IDE 中进行两个设置。

于 2012-07-04T13:52:09.530 回答
0

不要尝试手动创建 XML。为此目的使用图书馆。您只是触及了一堆会破坏手工解决方案的特殊情况的表面。

使用核心 Java 类的一种方法是创建一个 DOM,然后使用写入到StreamResult. (如果您的文档很大,您可以通过驱动 SAX 事件处理程序来执行类似的操作。)

有许多第三方库可以帮助您非常轻松地做同样的事情。

于 2012-07-04T14:05:12.583 回答