ホームページ >バックエンド開発 >PHPチュートリアル >PHP配列エンコード変換方法リファレンス

PHP配列エンコード変換方法リファレンス

WBOY
WBOYオリジナル
2016-07-25 08:58:021214ブラウズ
この記事では、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 配列のエンコード変換の問題についての紹介です。皆さんのお役に立てれば幸いです。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。