ホームページ > バックエンド開発 > PHPの問題 > php jsonが配列化けコードに変換された場合の対処方法

php jsonが配列化けコードに変換された場合の対処方法

PHPz
リリース: 2023-04-27 16:50:47
オリジナル
626 人が閲覧しました

php jsonから配列の操作を実行すると、文字化けが頻繁に発生します。この問題の根本は、文字セットの不一致です。

Java、Python、その他の言語のデフォルトの文字セットは utf-8 ですが、php のデフォルトの文字セットは ISO-8859-1 です。そのため、json文字列を処理する場合、json文字列の文字セットがutf-8、phpの文字セットがISO-8859-1の場合、変換後の配列が文字化けしてしまいます。

この問題を解決する方法を見てみましょう。

1. json 文字列の文字セットを指定する

json 文字列の文字セットがわかったら、文字セットを指定することで問題を解決できます。

サンプルコード:

$json_str = iconv('utf-8','ISO-8859-1',$json_str); //将json字符串的字符集从utf-8转换为ISO-8859-1
$arr = json_decode($json_str, true); //将json字符串转换成数组
ログイン後にコピー

2. phpのデフォルト文字セットを変更する

JSON文字列の文字セットが分からない場合、または大規模な文字列を処理する必要がある場合JSON文字列の数、PHPのデフォルト文字セットを変更できます。こうすることで、どんなjson文字列を処理しても文字化けすることはありません。

php のデフォルトの文字セットを変更する方法は、php.ini ファイルで変更することです。この操作は、次の手順で完了できます。

  1. php.ini ファイルを開く

ターミナルに次のコマンドを入力して、php.ini ファイルを開きます:

sudo vi /etc/php/7.3/apache2/php.ini
ログイン後にコピー
  1. デフォルトの文字セットを変更する

php.ini ファイルで次の 2 行を見つけてコメントを解除し、文字セットを utf-8 に変更します。

;default_charset = "iso-8859-1"
default_charset = "utf-8"
ログイン後にコピー
    Apache の再起動
php.ini ファイルを保存した後、変更を有効にするために Apache を再起動する必要があります:

sudo service apache2 restart
ログイン後にコピー
    Test
php のデフォルトの文字セットを変更した後、json 文字列が正しく解析できるかどうかをテストできます。サンプルコード:

$arr = json_decode($json_str, true); //将json字符串转换成数组
ログイン後にコピー
概要

json から配列への変換の文字化けはよくある問題ですが、簡単に解決できる問題でもあります。この問題は、json 文字列の文字セットを指定するか、PHP のデフォルトの文字セットを変更することで解決できます。いずれの場合でも、変換を正しく行うには、文字セットの概念を理解する必要があります。

以上がphp jsonが配列化けコードに変換された場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート