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

正しい方法

URLではなくHTMLドキュメントにデータを挿入しています。org.apache.commons.lang.StringEscapeUtils escapeHtml()または別のHTMLエンコーディング関数を使用します。

そうすれば、JSON文字列にデコードするために何もする必要はありません—ブラウザがそれを行います。に直接移動しparseJSONます。

あなたの方法を修正する

記載されている箇所については、マニュアルをunescape参照してください。

エスケープおよびアンエスケープ機能は、非ASCII文字に対しては正しく機能せず、非推奨になりました。JavaScript 1.5以降では、encodeURI、decodeURI、encodeURIComponent、およびdecodeURIComponentを使用します。

于 2012-07-26T08:14:44.830 に答える
0

ページはどのようにデータを取得しますか?ajax-request経由ですか、それともプレーン送信経由ですか?これを知らなくても、私はあなたに一般的なアドバイスを与えることができます。あなたのページを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 に答える