任意の言語で翻訳されたデータを格納するutf8_general_ci
フィールドlang_nameにコレクションを使用しています。データベースからデータを取得してjsonでエンコードすると、出力は次のよう"lang_name":"\u0905\u0902\u0917\u094d\u0930\u0947\u091c\u093c\u0940"
になりますが、データベースの値はअंग्रेज़ीです。
データベースからjson形式で保存されている実際の値を取得するにはどうすればよいですか?
\uxxxx
JSON 文字列は、UTF-8 などの特殊文字をエンコードする JSON 独自の方法であるため、JSON 文字列に問題はありません。
正しい JSON デコード方法を使用すると、文字列は再び問題なく表示されます。
PHP 5.4.0 以降では、エンコード時に特殊文字を実際に JSON 文字列に出力できるため、ブラウザは UTF-8 などをサポートしている場合に特殊文字を表示できます。
使用する:
$json = json_encode($my_utf8_meshup, JSON_UNESCAPED_UNICODE);
JSON_UNESCAPED_UNICODE フラグは、文字が同等の UTF8 エンコード文字に変換されることを保証します。
inconv()
パラメータのクールな組み合わせを使用したりmb_convert_encoding()
、(PHP 5.4.0 より前の) json_encode() が最終的に\uxxxx
文字変換にマッピングすることになるため、おそらくこれを行う方法はありません。繰り返しますが、これは JSON (トランスポート) には適していますが、人間が判読できるとは限りません。