我在xml文件中崩溃了。它发生在ë上,在这种情况下是belgië(比利时的荷兰人)。
我正忙着寻找答案,但我找不到解决方案。有人有一个好主意吗?
我在Android下使用sax解析器。 错误:org.apache.harmony.xml.ExpatParser $ ParseException:在第2行,第204列:格式不正确 xml来源:http://biohorma.weatheronyoursite.com/villadm_hooikoortsverwachting_be.xml
感谢您提供帮助
旁注,我通过流获取数据,是将此流设置为临时值,用有效字符替换非法字符并创建新流的唯一选项,或者您可以在流中添加内容这样做?
答案 0 :(得分:4)
似乎您应该使用String (byte[] bytes, String enc)构造函数,假设服务器发送给您的是UTF-8编码:
String properXml = new String(byteArrayIReceivedFromServer, "UTF-8");
答案 1 :(得分:2)
问题不在于解析器 - 它的行为是正确的 - 但是无论发送XML的代码是什么。需要对ë进行编码并将其作为ë
传递。对于其他重音字符,&符号和尖括号也必须这样做。
答案 2 :(得分:1)
你应该替换xml中的特殊字符我认为..
在此处查看完整的字符列表:http://www.w3schools.com/tags/ref_entities.asp
它说你的变音符号就像:Ë Ë Ë capital e, umlaut mark
如果您想阅读,那么a brief explanation也是如此。
希望它有所帮助。
答案 3 :(得分:0)
服务器发送以下标题:
Content-Type: text/xml
Content-Length: 124512
由于没有为内容类型指定字符集,因此通常正确的假设是US_ASCII。但是,XML有效负载似乎在ISO-8859-1
中编码<?xml version="1.0" encoding="iso-8859-1"?>
和'ë'编码为0xEB(235)。服务器在ISO-8859-1中对文本有效负载进行编码是很常见的,所以这是人们必须处理的事情。
我的猜测是,如果您直接使用字节流为解析器提供服务,它将相应地检测编码。如果使用字符流(不推荐),请确保指定正确的编码。