PHP配列エンコーディングの変換例

怪我咯
リリース: 2023-03-13 15:50:01
オリジナル
1820 人が閲覧しました

PHP プログラミングでは、配列の操作でエンコード変換に関連する問題が発生することがあります。

一部の特殊文字の表示効果のため、Ajaxテクノロジーを使用しているため、エンコード変換という古い問題も伴います。

一部のフォーム検証は、JSON データを返す必要があります。PHP の json_encode 関数は utf-8 エンコードのみをサポートしているため、望ましい効果は GBK 配列を utf-8 配列に変換して渡すことです。 json_encode 関数に。

これが最初に行われた方法です。配列をシリアル化した後、iconv 関数を使用してエンコーディングを変換し、それを逆シリアル化します。

コードは次のとおりです。

unserialize(iconv('gbk','utf-8',serialize($array)));
ログイン後にコピー

得られた結果は空白であったことを後で思い出しました。デフォルトは

設定ファイルで設定されました エンコーディング ini_set('default_charset', 'gbk'); gbk を使用して utf-8 文字列を逆シリアル化するのは、明らかに使いにくいです。 ここで、シリアル化とシリアル化の間に ini_set('default_charset', ' を追加します)。 deserialization.utf-8'); も可能であるはずですが、これはグローバル エンコーディング設定であり、データベース操作などの他の場所でエンコーディングの問題を引き起こしやすいため、常に少し面倒に感じます。次に、考え方を変更し、配列プロトタイプを構築するシリアル化メソッドを使用し、var_export 関数を使用します。 最終的な関数は次のとおりです。

コードは次のとおりです。

function array_iconv($in_charset,$out_charset,$arr){  
        return eval('return '.iconv($in_charset,$out_charset,var_export($arr,true).';'));  
}
ログイン後にコピー

原理は非常に単純です。 true に設定すると、配列のプロトタイプ文字列が返され、文字列が utf-8 エンコーディングに変換され、eval を使用して戻り値が実行されます (

匿名関数? と同様)。これで問題は完全に解決されます。

フォローアップ: 後で、より良い方法があるかどうかを確認するためにインターネットで情報を検索しました。見つかったものはどれも似たようなもので、配列の要素が多すぎる場合や次元が多すぎる場合は、パフォーマンスが低下します。ネイティブコード方式の方が優れており、N 次元配列であるか連想配列であるかを考慮する必要がなく、事前にデータの一貫性が確保されています。そして配列変換後。コードの長さとループとネイティブ メソッドの比較から判断すると、誰もがすでに選択肢を持っていると思います。

以上がPHP配列エンコーディングの変換例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!