javascript
  • unicode
  • urlencode
  • 2012-07-26 57 views 0 likes 
    0

    我想先编码一个JSON字符串(它有一些阿拉伯词),然后在我的JavaScript文件中解码它。如何在JavaScript中编码/解码JSON字符串中的阿拉伯语?

    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

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

    2

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

    然后,你不需要做任何事情来解码它到一个JSON字符串 - 浏览器将做到这一点。请直接前往parseJSON

    修复自己的方式

    the manual for unescape,它说:

    的逃生和UNESCAPE功能不用于非ASCII字符正常工作,并已被弃用。在JavaScript 1.5和更高版本中,使用encodeURI,decodeURI,encodeURIComponent和decodeURIComponent。

    +0

    'org.apache.commons.lang.StringEscapeUtils escapeHtml()' 使用此代码,但它没有帮助。 – rkg 2012-07-26 08:24:28

    +0

    @rahulkgupta - 你是否记得删除'unescape'和'+'正则表达式? – Quentin 2012-07-26 08:30:22

    +0

    是的!我已经删除了这些东西,但仍然无法正常工作。 – rkg 2012-07-26 08:42:11

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

    +0

    UTF-8字符集是问题。使用UTF-8,英文正在工作,但阿拉伯文字未正确编码。 – rkg 2012-07-26 09:08:15

    +0

    UTF-8字符串可能被破坏。我有问题,我的数据库提供了一些utf-8字符串。但我的cgi脚本将它们解释为“正常”字符串。因此“ü”被转换为“ü”。尝试找出编码出错的地方。数据库中的字符串是否正确编码? – 2012-07-26 09:12:22

    +0

    如何检查编码是否无效? 我通过表单提交将编码数据传递给另一个页面。 同样的东西适用于英文单词。 – rkg 2012-07-26 09:36:54

    相关问题