ホームページ  >  記事  >  バックエンド開発  >  gbk中国語分割時の文字化け問題を解決する、gbk中国語分割時の文字化け_PHPチュートリアル

gbk中国語分割時の文字化け問題を解決する、gbk中国語分割時の文字化け_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-12 08:58:371026ブラウズ

gbk中国語の文字化け問題が解決しました Split gbk中国語の文字化け

最近、「韬(タオ)」という魔法の言葉に出会いました。

具体的なプロセスは次のとおりです:

リーリー

このセグメンテーションの結果を取得します。

想像に反して、結果は実際には次のようになります:

リーリー

文字化けが発生し、空の要素が不可解に表示されました。

その理由は、文字「韬」の gbk エンコードが 8f7c で、| の ASCII が 7c であることが判明したため、explode は「韬」の 2 番目の ASCII を | としてカットします。

全角問題なのでmbstringで解決しました。

残念ながら、PHPにはmb_explodeのような関数はありません。検索したところ、mb_splitを見つけました。

リーリー

エンコーディングを宣言する場所がありません。よく見ると、mb_regex_encoding 宣言によってエンコードされていることがわかります。

そこで私は次のコードを書きました:

リーリー

その結果、php はエラーを報告し、mb_regex_encoding が gbk を認識しませんでした。恥ずかしいことです。

次に、それを使用して次のことを確認します:

リーリー

結果:

リーリー

この方法は役に立たないことがわかりました。 、

その理由は? 「Tao」という単語は GB2312 のコード セットにはありません。 ! ! ! !ただし、この関数はこの文字のエンコーディング セット (GBK、GB18030) をサポートしていません。 ! ! ! !

これは使いにくいので、汎用の正規表現でも大丈夫かもしれません。したがって、次のコードが得られました:

リーリー

結果:

リーリー

はい、考えすぎました。

ここで、正規表現を使用してこのシーンを記述する方法を学習しましょう。

参考までに、Bird兄さんのブログ:GBK中国語分割時の文字化け問題の解決方法。残念ながら、正規表現能力が比較的低い私には、適切な正規表現がまだ思いつきません(この正規表現を思いついた達人がいたら教えてほしいです)。

よく考えた結果、substr を使用するしかありません:

リーリー

テストコード:

リーリー

結果:

リーリー

このようにして、正しい結果を得ることができます。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/1102849.html技術記事 gbk中国語を分割すると文字化けが発生する問題が解決されました 最近、gbk中国語を分割すると文字化けする魔法の文字Tao(タオ)に遭遇しました。 具体的な処理は次のとおりです: 1 $list =explode ('|', 'abc韬|bc' ); 2...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。