0

我有一个 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)。如何转换此编码符号。请帮忙。

我试过了,但没有用:

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

1 回答 1

4

您正在显示带有非货币符号的文本......就好像您正在获取原始文本,然后将其编码为 UTF-8,然后将其解码为 ISO-8859-1。

它只是文本 - 之后您不需要对它做任何事情,而且您永远不应该以这种损坏的格式看到它。如果您必须将文本转换回字节,然后再次转换为字符串,那基本上意味着您已经迷路了。

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

另一种可能性是,返回 JSON 的任何东西都准确地为您提供了它所知道的数据,并且数据在上游被破坏了。您应该逐步跟踪数据(假设您拥有链中的所有链接),直到您可以看到您第一次遇到这种损坏的位置。

于 2013-06-22T07:42:51.360 回答