我在使用Javascript编码和解码时遇到问题。我有一个json对象,其中包含以UTF-8编码的字符串,如'R\xc3\xa9union'
。为了确保Javascript文件正确显示字符串,我将一个属性charset添加到script标签。 json对象在countries.js
中。我将country.js作为<script src="js/countries.js" charset="UTF-8"></script>
包括在内,但仍显示为Réunion而不是Réunion。有什么建议吗?
最佳答案
将escape()
与decodeURIComponent()
结合使用:
decodeURIComponent(escape('R\xc3\xa9union'));
这应该够了吧:
escape('R\xc3\xa9union'); // "R%C3%A9union"
decodeURIComponent("R%C3%A9union"); // "Réunion"
现在,您说您无法在需要JSON字符串的所有地方手动执行此操作。我真的不知道一种无需使用JS重新构建JSON即可自动执行此操作的方法,因此,我建议编写一个“包装器”函数以即时解码:
function dc(str){
return decodeURIComponent(escape(str));
}
然后,您可以轻松解码所需的字符串:
var myString = dc(myJson["some"]["value"]);
现在,还有其他方法可以工作,但风险更高:
JSON.stringify()
整个对象,使用2个函数对其进行解码,然后再次JSON.parse()
对其进行解码。关于javascript - JavaScript编码和解码错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23882847/