转换并显示UTF8编码字符串

时间:2013-06-22 07:40:18

标签: java android unicode nsstringencoding

我有一个JSON响应,我希望将其存储在数据库中,并在文本视图中显示或编辑文本。此json响应由UTF-8格式编码。

回应就像是

 "currencies": [[0,"RUR"," ",1,0],[1,"EUR","â¬",1.44,100],[2,"GBP","£",1.6,100],[3,"JPY","Â¥",0.0125,100],[4,"AUD","$",1.1,100]]}

其中â€,Â¥是货币符号。我必须解码然后显示。此符号是Unicode中的符号(转换为UTF8)。如何转换此编码符号。 Plz帮助。

我尝试了这个,但它没有用:

byte[] b = stringSymbol.getBytes("UTF-8"); // â¬,£,Â¥
final String str = new String(b); 

1 个答案:

答案 0 :(得分:4)

您正在使用非货币符号显示文本 ...就好像您正在使用原始文本,然后将其编码为UTF-8,然后解码它作为ISO-8859-1。

这只是文本 - 之后你不应该对它做任何事情,你永远不应该以这种破碎的格式看到它。如果你必须将文本转换回字节然后再转换为字符串,这意味着你已经基本上已经丢失了。

检查返回JSON的HTTP响应上的标题 - 我怀疑你会发现它声称数据是ISO-8859-1而不是UTF-8。 实际编码必须匹配标头中指定的编码,否则最终会产生这种效果。

另一种可能性是,无论返回什么,JSON都能准确地为您提供知道的数据,并且数据在上游被破坏。您应该逐步跟踪数据(假设您拥有链中的所有链接),直到您可以看到您第一次遇到此断裂的位置。