0

私はアラビア文字のデータにajaxを使用しており、すべてが正常に機能します。アラビア文字をデータベースに保存でき、データベースからアラビア文字を取得して画面に出力できます。すべてが正常に機能しますが、問題は、javascripteconcoleをチェックするとgoogle chromeで取得データを確認するには、アラビア文字を表示できませんが、このように出力されます(これは単なる例であり、すべてのデータではありません)

["\u0645\u062f\u064a\u0646\u0629","\u0645\u062f\u064a\u0646\u0629 \u062a\u0627\u0631\u064a\u062e\u064a\u0651\u0629","\u0634\u062e\u0635\u064a\u0651\]

私はこのように意味します

ここに画像の説明を入力してください

4

1 に答える 1

3

JSONを使用する場合、文字列はUTF-8であり、特殊文字は\u4つの16進文字が後に続くようにエンコードされます。

あなたの場合、その文字列をデコードしようとすると、たとえば、配列の最初の項目を使用して:

>>> str = "\u0645\u062f\u064a\u0646\u0629";
"مدينة"

私はアラビア語を読みませんが、これは私にはアラビア語のように見えます:-)

JSONが見栄えが良くない場合でも、それは重要ではありません。重要なことは、JSONがデコードされたら、元のデータを取り戻すことです。そして、ここでは、あなたがやろうとしているようです。


ブラウザのコンソールで元のデコードされた文字列を取得するには(デバッグの目的で) 、アプリケーションで使用しているのと同じJSライブラリ(存在する場合)またはJSON.parse()関数(これをテストしたばかりです)を使用できる必要がありますFirefoxのコンソールでは、実際には)

>>> JSON.parse('"\u0645\u062f\u064a\u0646\u0629"');
"مدينة"

もちろん、デコードされた値を実際にブラウザのコンソールに出力するには、コードを記述する必要があります(「手動」であるか、サーバーからJSONを取得する場合)。しかし、ブラウザのコンソールはデバッグツールなので、問題ないようです。
デフォルトでは、コンソールはデバッグツールとして、サーバーから取得した生のJSON文字列を出力します。JSONでは特殊文字がエンコードされているため、JSON文字列をデコードして表示する以外に何もできません。必要に応じて、自分で)


JSON.parse()サーバーから結果を取得するたびにデコードされた文字列をコンソールに出力する場合は、サーバーから結果を取得するたび に呼び出す必要があります。次に、おそらくを使用して出力しconsole.log()ます。

ただし、アプリケーションを配布したり、本番サーバーにアップロードしたりする前に、そのデバッグコードを削除することを忘れないでください。

于 2012-05-20T08:25:40.827 に答える