从UTF8 JSON到ISO-8859-1的字符编码

使用getJSON检索我在服务器端的utf8编码的一些数据…

 "title":"new movie \u0091The Tree of Life\u0092 on day 6" 

显示的页面是charset ISO-8859-1 ,我这样做……

 $.getJSON('index.php', { q: q }, function(data){ for (var i = 0; i < data.length; i++) { alert(data[i].title + "\n" + utf8_decode(data[i].title)); } }); 

utf8_decode函数来自这里 。

问题是我仍然看到两个版本的魔术方块……

新电影第6天的生命之树

新电影“生命之树”第6天

这让我相信这个角色可能既没有编码也没有编码。 但是,如果我将字符串粘贴到页面上并将字符集设置为UTF8或ISO-8859-1,它就可以工作: – /

任何帮助都会很棒!

无需转义或解码以JSON格式传输的数据中的任何字符。 它是自动完成的。 它也独立于页面的编码。 即使ISO-8859-1不包含欧元符号,您也可以使用代码轻松传输和显示欧元符号( \u20ac )。

你的问题是字符\u0091\u0092 。 它们不是有效的Unicode字符。 它们仅供私人使用。

它看起来好像你实际上拥有最初使用Windows-1250字符集但未正确转换为Unicode / JSON的数据。 在Windows-1250中,这两个字符是印刷单引号。

你没试过utf8_decode吗?

如果字符串中的字符存在于ISO-8859-1中,那么这将起作用,因为Javascript在页面编码中对\u0091进行解码。