android:已解决:无法解析从UTF-8数据获取的货币数据文本

时间:2010-10-08 10:24:44

标签: android xml utf-8 currency

您好 我正在尝试获取此xml响应

<?xml version="1.0" encoding="utf-8"?>
<desc c="¥99"/>

但在我的Android上每次获得¥99 ,解析xml后,而不是正确的数据(即¥99 )。有没有办法解析这个货币数据正确。如果我遗漏了什么,请纠正我。 编辑:这是用于获取xml

的代码
docBuilder = docBuilderFactory.newDocumentBuilder ();
    InputSource is = new InputSource ();
    is.setEncoding ("UTF-8");
    Document doc = null;

        is.setCharacterStream (new StringReader (xmlStr));
        doc = docBuilder.parse (is);

    if (doc != null)
    {
            doc.getDocumentElement ().normalize ();
            NodeList detail = doc.getElementsByTagName ("desc");
            String c = detail.item (0).getAttributes ().getNamedItem ("c").getNodeValue ();

    }

5 个答案:

答案 0 :(得分:0)

答案取决于您解析XML的方式。例如,其中一个重载的Xml#parse()方法接受一个Xml.Encoding参数,您可以使用该参数指定源是UTF-8。

其他解析方法也可能有设置编码的选项。只需查看文档。

当然,服务器完全有可能无法生成正确的UTF-8,即使它在XML文件中声明为正确。

答案 1 :(得分:0)

如果我们有您正在阅读XML流的代码,那将会有所帮助。 我假设您需要确保以正确的编码读取流(因为流读取器可能不会考虑XML声明的编码。

答案 2 :(得分:0)

这看起来不像格式良好的XML。没有属性名称,只有c元素。这似乎不足以得到正确的结果......

答案 3 :(得分:0)

好的,使用示例代码,我猜是setCharacterStream()会导致错误。如果没有自己测试,docs表示编码仅由字节流使用,因此请改用setByteStream(),或者更好地使用InputSource的{​​{3}}。

答案 4 :(得分:0)

您好 感谢您的支持我认识到了这个问题,我从服务器获得响应的方法有以下代码

String strResponse = EntityUtils.toString (response.getEntity ());

其中`response.getEntity()。getContentEncoding()返回null,所以我将其更改为

String strResponse = EntityUtils.toString (response.getEntity (),"UTF-8");

其中“UTF-8”是默认字符集。

感谢StackOverFlow!