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

时间:2011-09-05 15:42:27

标签: javascript jquery json character-encoding

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

"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功能来自here

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

新电影第6天的生命之树

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

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

任何帮助都会很棒!

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

您是否尝试过没有 utf8_decode?

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