我在使用JAVA中的UTF-8编写xml文件时遇到问题。 问题:我有一个文件名,其中有一个interpunct(middot)(·)。当我试图在xml标签内写入文件名时,使用java代码我会在文件名中得到一些像那样的垃圾编号而不是·
OutputStreamWriter osw = new OutputStreamWriter(file_output_stream,“UTF8”);
上面是我用来编写xmlfile的java代码。任何人都可以告诉我为什么要理解和排序问题?提前谢谢
答案 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事件处理程序来执行类似的操作。)
有许多第三方库可以帮助您轻松完成同样的事情。