ホームページ >バックエンド開発 >PHPチュートリアル >UTF-8中国語文字化けに対するPHPソリューション
UTF-8 中国語文字化けに対する PHP ソリューション
1. post メソッドまたは get メソッドのいずれかのフォームを使用して送信します。
このメソッドで「人」という単語を送信する場合、getメソッドを使うと分かります。 IEのアドレスバーに「%4e%ba%ba」という文字が表示されないのは、IEのフォーム送信時に自動的に送信されてしまうためです。 Urlencode エンコードを使用し、検索ページで変数を受け取ると、PHP はそれらを自動的にデコードします。つまり、得られるのは UTF-8 の「人間」特性です。もちろん、フォームが配置されているページが UTF-8 でエンコードされていれば問題はありません。
?
2.テキスト リンクを送信する UTF-8 でエンコードされたページに、xxxx の形でテキスト リンクが表示されます。[送信] をクリックすると、IE のアドレス バーに「人」という文字が表示されます。ページを受信して出力すると、「浜」という単語になることがわかります。UTF-8 ページを送信すると、出力ページも UTF-8 でエンコードされますが、エラーが発生します。これは環境設定の問題ではないことに注意してください。インターネット上の多くの紹介では、php.ini でdefault_charset を開き、それを utf-8 に変更すると問題が解決するとされています。これは不正確です。今回は出力はありません。urlencode を使用してこの単語をエンコードし、結果が「%4e%ba」となり、上位ビットが欠落していることがわかります。ここまで来ると高い位置がなくなっているので、このページでは何もできません。 ieの問題はここにあります。 utf-8 のエンコードでは、テキスト チェーンを使用して送信する場合、実際には中国語の文字は utf-8 でエンコードされます。 IEのHTML解析の問題のため、奇数桁の漢字や全角奇数桁の上位ビットを勝手に切り落として2バイトとして処理していた。これが現在の問題につながります。解決策: 送信するキーワードを偶数に記述すると、このような問題は二度と発生しません。実際に奇数しかない場合は、送信するときにキーワードの前に URL エンコードするか、キーワードの後に全角スペースを追加します。これにより、受信ページは完全な文字列を取得し、それを処理してスペースを切り取ることができます。
?
3. IE アドレス バーに中国語の文字を手動で入力してページを開く この方法は、Web ページの基本的な知識を持つユーザーが、手間を省くためにキーワード クエリの URL アドレスを直接変更する場合によく使用されます。別のキーワード クエリを実行します。現時点では、ユーザーがアドレス バーに入力した中国語の文字は gb2312 であり、ページは UTF-8 であるため、自動変換されません。興味がある場合は、urlencode を確認してみてください。このとき、キーワードを受け取った後、iconv を使用してそれを utf-8 に変換すると、 をクエリできます。