2013-02-27 70 views
1

我的XML响应正常显示是一些匈牙利的字符不会在android系统

<name> DPD futár </name>

我的XML解析代码

 SAXParserFactory _saxFactory = SAXParserFactory.newInstance(); 
     SAXParser _saxParser = _saxFactory.newSAXParser(); 
     XMLReader _xmlReader = _saxParser.getXMLReader(); 
     _shippingMethodList = new ArrayList<ShippingMethodItem>(); 
     ShippingMethodParser _cartLoginParser = new ShippingMethodParser(
       _shippingMethodList); 
     _xmlReader.setContentHandler(_cartLoginParser); 
     InputSource is = new InputSource(); 
     is.setEncoding("ISO-8859-1"); 
     is.setCharacterStream(new StringReader(response)); 
     _xmlReader.parse(is); 

但我得到了下面的字符串我名称变量。

DPDfutár

我也尝试用

is.setEncoding("UTF-8"); 

,但没有得到成功。任何人都可以帮我解决这个问题吗?

+0

可能帮助you.http://stackoverflow.com/questions/4259128/how-can-i-create-a-multilingual-android-application – 2013-02-27 12:48:44

回答

1

试试这个

InputSource in = new InputSource(new InputStreamReader(url.openStream(),"ISO-8859-1")); 
0

匈牙利语数据不应该使用ISO-8859-1(拉丁语1)编码,因为它不包含国家字符,如ő。字母á也是葡萄牙语和西班牙字母的一部分,并且都由拉丁语1支持,但在匈牙利语中,只有拉丁语2(ISO-8859-2)可以使用。但是,您应该尽可能使用unicode编码。

首先我会检查收到的数据是否正确编码,因为当您将字符串编码为unicode时也可能发生错误。您提供的示例是典型的编码错误。也许你试图将UTF-8编码为UTF-8,这是错误的。

+0

不是成功转换后\t is.setEncoding(“ISO-8859-2”); – 2013-02-27 13:07:28

+0

我认为你以适当的UTF-8编码接收你的数据,但不知何故强制解析器重新编码它。你不需要那个。按原样处理XML。如果SAX无法触摸原始编码就无法完成,那么请尝试Pull Parser,无论如何它的运行速度都会更快。 – 2013-02-27 13:10:55

相关问题