从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
进行解码。