0

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

3 回答 3

2

正确的方式

您正在将数据插入 HTML 文档,而不是 URL。使用org.apache.commons.lang.StringEscapeUtils escapeHtml()或其他 HTML 编码功能。

然后你不需要做任何事情来将它解码为 JSON 字符串——浏览器会这样做。直接去就行了parseJSON

修复你的方式

请参阅手册unescape中的说明:

escape 和 unescape 函数不适用于非 ASCII 字符,已被弃用。在 JavaScript 1.5 及更高版本中,使用 encodeURI、decodeURI、encodeURIComponent 和 decodeURIComponent。

于 2012-07-26T08:14:44.830 回答
0

您的页面如何获取数据?通过 ajax 请求还是通过普通提交?在不知道这一点的情况下,我只能给你一个常见的建议。使您的页面成为 utf8 页面。这样,浏览器将处理转换。在我的项目中,这样做后显示俄语或中文字符没有问题。浏览器完成了这项工作。我只需要告诉他我正在使用 utf-8 数据。

所以将它添加到您的 html 页面:

<title>
 <meta http-equiv="Content-Type" CONTENT="text/html; charset=utf-8">
</title>

这对你的html-forms:

<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 中可能有其他方法可以做到这一点。

于 2012-07-26T09:00:52.623 回答
0

使用 UTF-8 而不是 ISO-8859-1 解决了这个目的。

于 2013-08-03T05:06:05.917 回答