ホームページ  >  記事  >  バックエンド開発  >  PHP分割GBK中国語文字化けの解決策

PHP分割GBK中国語文字化けの解決策

WBOY
WBOYオリジナル
2016-07-25 09:00:111079ブラウズ
PHP で中国語の文字列を gbk エンコード形式で分割すると文字化けが発生しやすくなります。この問題を解決するにはどうすればよいですか?困っている友達は、この記事の紹介を参照してください。

次のような文字列 (GBK) の場合、explode は正しい結果を取得できません。 $result =explode("|", "滕華塔|海青");

その理由は、文字「韬」(タオと発音します。あなたがそれを知らなくても問題ありませんし、私も知りません)の場合、その GBK エンコーディング値が 8f7c であるためです。残念ながら、ASCII 値は「」です。 |"も7cです

同様の問題がいくつかあります。 GBK エンコードのエンコード範囲は 0x8140-0xfefe であるため、理論的には、下位バイトが 7c の単語には次のような問題が発生します。 倈(827c)、億(837c)、禧(b17c)、鴴(e57c)...など

この状況に関しては、 まず、utf8 へのトランスコーディングを使用してから、分解してから元に戻すことができます。これは、より面倒な方法です。 2 番目に、正規表現を使用して、「分離」を「一致」に置き換えることができます。 preg_match_all("/([/x81-/xfe][/x40-/xfe])+/", $gbk_str, $matches);//ハードコーディングされたエンコーディング このように、$matches のインデックス 0 に対応する配列が結果の単語の配列になります。

上記は php GBK エンコーディングの問題の解決策です。皆さんとのコミュニケーションを歓迎します。


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