如何在java中的xml文件中编写特殊字符(interpunct)?

时间:2012-07-04 13:37:46

标签: java xml utf-8

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

OutputStreamWriter osw = new OutputStreamWriter(file_output_stream,“UTF8”);

上面是我用来编写xmlfile的java代码。任何人都可以告诉我为什么要理解和排序问题?提前谢谢

4 个答案:

答案 0 :(得分:1)

该字符是ASCII 183(十进制),因此您需要将字符转义为·。以下是演示:如果我在此答案中输入 "·" ,我会“·”
浏览器正在打印您的角色,因为此网页是XML。

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

答案 1 :(得分:1)

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

String a = "\u00b7";

或者告诉编译器使用UTF-8,只需按原样将其写入代码即可。

答案 2 :(得分:0)

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

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

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

这样可以在IDE中进行两项设置。

答案 3 :(得分:0)

不要尝试手动创建XML。为此目的使用库。你只是抓住了一堆破坏手工解决方案的特殊情况。

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

有许多第三方库可以帮助您轻松完成同样的事情。