我使用last.fm API:Api Last.fm
我有他们的艺术家的歌曲(曲目)列表,我想恢复每首歌曲,如他的歌曲。方法 Track.getSimilar(艺术家,曲目,键)完美无缺。 但是当艺术家或曲目使用阿拉伯语时,我会遇到以下异常:
[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)
请问如何解决这个问题?
提前谢谢
答案 0 :(得分:6)
Unicode代码点0x3
是一个控制字符。它不是任何脚本或语言系统中的正常字符,因此它的存在显然是一个错误,可能在数据库本身。这可能是编码转换失败,字符到字节转换或数据库写入损坏的结果。
XML不能包含控制字符 - 甚至不能包含实体引用。因此,您的XML格式不正确,无法使用XML工具进行处理。相反,您需要使用字符串处理或类似方法删除该错误字符。
同时,您可以检查XML中非法的所有其他字符。 XML不允许来自Unicode代理块[0xD800 - 0xDFFF]
,非字符0xFFFE
和0xFFFF
的任何字符或0x20
(=控制字符) execpt下面的字符 0x9
[tab],0xA
[LF]和0xD
[CR]。这在此正式陈述:http://www.w3.org/TR/2000/REC-xml-20001006#NT-Char
答案 1 :(得分:1)
0x3是ASCII control code ETX,但是一些旧程序可能会将它用作回车符或其他东西,所以你可以通过将类似的东西粘贴到文本字段来实现这一点。