如何在Javascript中对JSON字符串中的阿拉伯语进行编码/解码?

时间:2012-07-26 08:06:55

标签: javascript unicode urlencode

我想先编码一个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;
   };

3 个答案:

答案 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的目的。