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 エンコーディングの問題の解決策です。皆さんとのコミュニケーションを歓迎します。 |