この記事では、PHP で配列をエンコードおよび変換する方法をいくつか紹介します。必要な方は参考にしてください。
PHP プログラミングでは、配列の操作でエンコード変換に関連する問題が発生することがあります。 一部の特殊文字の表示効果により、Ajax テクノロジーの使用により、エンコード変換という古い問題が発生し、UTF-8 が GBK に変更されました。 一部のフォーム検証では json データを返す必要があります。PHP の json_encode 関数は utf-8 エンコードのみをサポートしているため、目的の効果は GBK 配列を utf-8 配列に変換して json_encode に渡すことです。関数。 これは、配列をシリアル化した後、iconv 関数を使用してエンコーディングを変換し、再度逆シリアル化する方法です。 リーリー 結果は空白でした。後で、デフォルトのエンコーディングが設定ファイル ini_set('default_charset', 'gbk'); に設定されていることを思い出しました。 gbk を使用して utf-8 文字列を逆シリアル化するのは決して簡単ではありません。シリアル化と逆シリアル化の間に ini_set('default_charset', 'utf-8'); を追加できるはずです。 ただし、これはグローバルなエンコード設定であるため、データベース操作など、他の場所でエンコードの問題が簡単に発生する可能性があります。配列プロトタイプを構築し、var_export 関数を使用するシリアル化方法を使用すると、最終的な関数は次のようになります: リーリー 原理分析: var_export は 2 番目のパラメータを true に設定し、配列のプロトタイプ文字列を返し、その文字列を utf-8 エンコーディングに変換してから、eval を使用して戻りを実行します (匿名関数と同様?)。これで問題は完全に解決されます。概要: インターネット上のほとんどのメソッドは、iconv への再帰呼び出しを使用します。配列の要素が多すぎる場合、または次元が多すぎる場合、パフォーマンスが低下します。 したがって、N 次元配列であるか連想配列であるかを考慮する必要はなく、配列の前後でデータの一貫性を確保するためにすべてが自動的に行われるため、ネイティブ コードを使用するのが最善の方法であると個人的に感じています。変換。 これは、PHP 配列のエンコード変換の問題についての紹介です。皆さんのお役に立てれば幸いです。 |