ホームページ  >  記事  >  バックエンド開発  >  json_encode UTF-8 php、_PHP チュートリアルの中国語文字化け問題

json_encode UTF-8 php、_PHP チュートリアルの中国語文字化け問題

WBOY
WBOYオリジナル
2016-07-13 10:18:461203ブラウズ

phpのjson_encode UTF-8中国語文字化け問題

最近インターネットでjson_encodeエンコードをUTF-8中国語に設定すると文字化けしないことを確認しました。この方法が確かに効果的であることはわかりますが、しばらく使用するとコードがうまく動作しなくなるのはなぜでしょうか。以下は、json_encode に対する私自身の解決策です。もっと良い方法がある場合は、ぜひ共有してください。

最初のタイプ:

これは単純なコード変換であり、urlcode の後に必要な配列を返します

私のコードにはこれで十分です。

コードは次のとおりです コードをコピーします
public static function encodeOperations ($array)

{

foreach ((array)$array as $key => $value) {

if (is_array($value)) {

encodeOperations($array[$key]);

} 他 {

$array[$key] = urlencode(mb_convert_encoding($value,'UTF-8','GBK'));

}

}

$array を返す;

}

2 番目のタイプ:

これをインターネットで見たところ、無限ループの問題が発生するというコメントがありましたが、これは明らかに非常に包括的なものであり、テストした結果、参考のためにのみここに投稿します

コードは次のとおりです コードをコピーします

/*************************************************** * **********

*

* 特定の関数を使用して配列内のすべての要素を処理します

* @param string &$array 処理対象の文字列

* エンコード後の @param string $tocode

* エンコード前の@param string $oldcode

* @param string $function 実行される関数

* @return boolean $apply_to_keys_only キーにも適用されるかどうか

* @return array $array keyにも適用されるかどうか

* @アクセス公開

*

************************************************ **************/

関数 encodeOperations (&$array, $function, $tocode=false,$oldcode=false,$apply_to_keys_only = false)

{

foreach ($array as $key => $value) {
(www.111cn.net)
if (is_array($value)) {

encodeOperations($array[$key], $function, $apply_to_keys_only);

} 他 {

if($tocode&&$oldcode) {

if(function_exists(mb_convert_encoding)) {

$value = mb_convert_encoding($value,$tocode,$oldcode);

}その他{

「エラー」を返す;

}

}

$array[$key] = $function($value);

}

if ($apply_to_keys_only && is_string($key)) {

$new_key = $function($key);

if ($new_key != $key) {

$array[$new_key] = $array[$key];

unset($array[$key]);

}

}

}

$array を返す;

}

/****出典:http://www.111cn.net/phper/31/66729.htm**************************** ******* *********************************

*

* 配列を JSON 文字列に変換します (中国語と互換性があります)

* @param array $array 変換される配列

* @return 文字列を変換した JSON 文字列

* @アクセス公開

*

************************************************ ************/

関数 JSON($array) {

arrayRecursive($array, 'urlencode', true);

$json = json_encode($array);

urldecode($json) を返す;

}

中国語で null が返された場合は、文字を uft8 に変換するか、urlencode を使用して最初にコンパイルする必要があります。


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/882088.html技術記事 phpでjson_encode UTF-8中国語が文字化けする問題 最近、インターフェースコードでjson_encodeを使用したところ、json_encodeエンコードをUTF-8中国語に設定すると文字化けが起こらないことが確認されました。これができるとは...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。