JavaScript编码&解码错误

时间:2014-05-27 06:52:06

标签: javascript encoding utf-8 decoding

我遇到了Javascript编码和解码的问题。我有一个json对象,其中包含一个以UTF-8编码的字符串,如'R\xc3\xa9union'。为了确保Javascript文件正确显示字符串,我在脚本标记中添加了属性字符集。 json对象位于countries.js中。我将countries.js包含为<script src="js/countries.js" charset="UTF-8"></script>,但它仍然显示为Réunion而不是Réunion。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

使用escape()结合decodeURIComponent()

decodeURIComponent(escape('R\xc3\xa9union'));

应该这样做:

escape('R\xc3\xa9union');           // "R%C3%A9union"
decodeURIComponent("R%C3%A9union"); // "Réunion"

现在,您说您无法手动为JSON中需要字符串的所有位置执行此操作。我真的不知道如何在不用JS重新构建JSON的情况下实现自动化,所以我建议写一些&#34;包装器&#34;函数即时解码:

function dc(str){
    return decodeURIComponent(escape(str));
}

然后,您可以轻松地解码所需的字符串:

var myString = dc(myJson["some"]["value"]);

现在,其他可以工作,但风险更大:JSON.stringify()整个对象,使用2个函数解码,然后再次JSON.parse()。 / p>