我想先编码一个JSON字符串(它有一些阿拉伯语单词),然后在我的JavaScript文件中对其进行解码。
PS:如果JSON字符串只有英文单词,这段代码可以正常工作。 但我希望它也适用于阿拉伯语单词。
编码:
<input type="hidden" id="cei-nav-urlparam-ceiIndex" value='<%= URLEncoder.encode(ceiIndexTree, "UTF-8") %>' />
解码:
this.initFiltersValues = function(ceinavUrlPara) {
ceinavUrlParams = unescape(ceinavUrlPara);
ceinavUrlParams = ceinavUrlParams.replace(/\+/g, " ");
var res = $.parseJSON(ceinavUrlParams);
console.log('INITIAL FILTER FROM URL: '+ceinavUrlParams);
return res;
};
答案 0 :(得分:2)
正确的方式
您正在将数据插入HTML文档,而不是URL。使用org.apache.commons.lang.StringEscapeUtils escapeHtml()
或其他HTML编码功能。
然后你不需要做任何事情来将它解码为JSON字符串 - 浏览器会这样做。直接转到parseJSON
。
确定您的方式
请参阅the manual for unescape
其中的内容:
对于非ASCII字符,escape和unescape函数无法正常工作,并且已弃用。在JavaScript 1.5及更高版本中,使用encodeURI,decodeURI,encodeURIComponent和decodeURIComponent。
答案 1 :(得分:0)
您的网页如何获取数据?通过ajax请求或通过简单的提交?不知道这个我只能给你一个共同的建议。使您的页面成为一个utf8页面。有了这个,浏览器将处理转换。在我的项目中,我这样做后显示俄语或汉字没有问题。浏览器完成了工作。我只是告诉他我正在使用utf-8数据。
所以将此添加到您的html页面:
<title>
<meta http-equiv="Content-Type" CONTENT="text/html; charset=utf-8">
</title>
这是你的html格式:
<form name="xxx" id="yyy" accept-charset="UTF-8" method="POST" >
并使用它来使你的ajax请求与utf-8兼容:
setRequestHeader("content-type","application/x-www-form-urlencoded;charset=UTF-8");
这对我的情况有帮助。我还必须“手动”将服务器响应(对于ajax请求)设置为utf-8。我不得不更改http标题“Content-Encoding”=“utf-8”。如何实现这一点取决于您的解决方案。在我的情况下,我必须这样做。在jsp或php中,可能还有其他方法可以做到这一点。
答案 2 :(得分:0)
使用UTF-8解决了ISO-8859-1的目的。