Java Track.getsimilor:在元素…;中发现无效的XML字符(Unicode:0x3);

Java Track.getsimilor:在元素…;中发现无效的XML字符(Unicode:0x3);,java,xml,unicode,arabic,last.fm,Java,Xml,Unicode,Arabic,Last.fm,我使用last.fm API: 我和他们的艺术家有一个歌曲(曲目)列表,我想恢复每一首歌曲,比如他的歌曲。方法Track.getsimilor(艺术家、轨迹、关键点)非常有效但是当艺术家或曲目是阿拉伯语时,我会得到以下例外情况: [Fatal Error] :2583:13: An invalid XML character (Unicode: 0x3) was found in the element content of the document. Exception in thre

我使用last.fm API:

我和他们的艺术家有一个歌曲(曲目)列表,我想恢复每一首歌曲,比如他的歌曲。方法Track.getsimilor(艺术家、轨迹、关键点)非常有效但是当艺术家或曲目是阿拉伯语时,我会得到以下例外情况:

    [Fatal Error] :2583:13: An invalid XML character (Unicode: 0x3) was found in the element content of the document.
Exception in thread "main" de.umass.lastfm.CallException: org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0x3) was found in the element content of the document.
at de.umass.lastfm.Caller.call(Caller.java:268)
at de.umass.lastfm.Caller.call(Caller.java:189)
at de.umass.lastfm.Track.getSimilar(Track.java:369)
请问我怎样才能解决这个问题


提前感谢

Unicode代码点
0x3
是一个控制字符。它不是任何脚本或语言系统中的正常字符,因此它的出现显然是一个错误,可能是数据库本身的错误。这可能是编码转换失败、字符到字节转换或数据库写入损坏的结果

XML不能包含控制字符,甚至不能作为实体引用。因此,您的XML格式不正确,无法使用XML工具进行处理。相反,您需要使用字符串处理或类似方法删除错误字符


同时,您可以检查XML中所有其他非法字符。XML不允许来自Unicode代理块的任何字符
[0xD800-0xDFFF]
、非字符
0xFFFE
0xFFFF
0x20
以下的字符(=控制字符)execpt
0x9
[tab]、
0xA
[LF]和
0xD
[CR]。这里正式说明了这一点:

0x3是ETX,但一些旧程序可能会将其用作回车符或其他内容,因此您可以通过将类似源的内容粘贴到文本字段中来实现这一点。

请注意,某些文本编辑器中会显示控制字符(例如,0x03在Textmate中显示为
^C
。您可以尝试复制/粘贴有问题的文本,以直观地查找时髦的字符!或者,正则表达式也可以始终跟踪这些字符。