我正在解析一个传入的xml提要,在android中使用它在app小部件中,问题是,法语字符在xml中没有正确编码,如:
Super Promo � l'incontournable Alhambra Thalasso 5* Hammamet : La nuit du 29/08 � seulement 107.185 DT au lieu de 126.100 DT en LPD
我正在解析这样的文件:
InputSource isrc = new InputSource(this.feed.openStream());
isrc.setEncoding("UTF-8");
DocumentBuilder builder = factory.newDocumentBuilder();
Document dom = builder.parse(isrc.getByteStream());
Element root = dom.getDocumentElement();
有没有办法摆脱这些奇怪的角色?
感谢。
答案 0 :(得分:2)
你硬编码将编码设置为“UTF-8”,但发件人实际使用了什么编码?
在XML中,您通常会像<?xml version="1.0" encoding="utf-8"?>
一样预先获取元信息。您应该使用元信息中的encoding-value进行正确的编码。
代码中的另一个问题是,您基本上绕过了行Document dom = builder.parse(isrc.getByteStream());
的编码。您应该改为InputSource
:
Document dom = builder.parse(isrc);
。
我实际上在下面的代码中使用Reader
,因为我直接使用Java的编码:
Document dom = builder.parse(
new InputSource(
new InputStreamReader(
feed.openStream(),
"[encoding goes here, usually UTF-8]")));
答案 1 :(得分:1)
请参阅this
我建议尝试使用UTF-16编码一次