Apache または Linux システムを使用している場合、中国語の URL が文字化けする問題は非常に一般的です。次のエディタでは、PHP での中国語の URL が文字化けする問題の解決策を紹介します。この方法がすべての学生に役立つことを願っています。 。
?id="中文" を使用して中国語のパラメータを渡すと文字化けが発生します。これは、php で中国語を直接 URL に送信できないためです。この問題が他の言語でも発生するかどうかはわかりません。
インターネットで言及されている header(“content-type:text/html;charset=utf-8”); のような解決策や、データベース ページなどを utf8 に設定する方法は完全に無効であり、常に渡されます。中国語が文字化けしてしまいました。
すべての 04ie.com サイトの PHP で統一された utf8 エンコーディングを使用していますが、パススルーすると常に文字化けします。その後、いくつかのブラウザをテストしたところ、360 はパススルーできることがわかりました。その後、$msg = を使用しました。 iconv ('gbk','utf-8',$_GET["msg"]); いくつかのブラウザを変換してテストした後も、ほとんどのブラウザで文字化けが表示されます。
最後にまとめると、GET[]の過去の値については、中国語をURL内で直接送信することはできず、どうしても送信する必要がある場合は、urlencode()メソッドを使用して中国語を処理します。 POST[] をどうすればいいのかわかりません。まだ実験をしていません。
urlencode():
urlencode() この関数は文字列を URL にエンコードします。たとえば、スペースはプラス記号になります。ホームページのフォームデータ送信はurlencodeでエンコードされて送信されます
なるほど、フォームから送信するときは問題ないのに、URLを渡すと文字化けしてしまうのはなぜなのかと質問しました
このツールは、エンコードとデコードの 2 つのメソッドを実装します:
中国語 -> GB2312 のエンコード -> %D6%D0%CE%C4
中国語 -> UTF-8 エンコード -> %E4%B8%AD%E6%96%87HTML での URL エンコード:
GB2312 としてエンコードされた HTML ファイル内: /中文.rar -> ブラウザは自動的に /%D6%D0%CE%C4.rar に変換します。
注: Firefox はデフォルトで UTF-8 エンコードで URL を送信するため、GB2312 エンコードの中国語 URL をサポートしていませんが、試してみたところ ftp:// プロトコルは問題ありませんでした。UTF-8 としてエンコードされた HTML ファイル内: /中文.rar -> ブラウザは自動的に /%E4%B8%AD%E6%96%87.rar に変換します。
PHP での URL エンコード:
コードは次のとおりです
// GB2312 のエンコード | |
echo rawurldecode("%D6%D0%CE%C4-_. ")."n";
?> 「-_.」を除くすべての非英数字は、パーセント記号「%」とそれに続く 2 つの 16 進数に置き換えられます。 | urlencode と rawurlencode の違い: urlencode はスペースをプラス記号「+」としてエンコードし、rawurlencode はスペースをプラス記号「%20」としてエンコードします。
1. ファイルを UTF-8 ファイルとして保存します。urlencode または rawurlencode を直接使用します。
2. mb_convert_encoding 関数を使用します。
コードは次のとおりです
コードをコピー
コードは次のとおりです | コードをコピー |
関数parseurl($url="") { $url = rawurlencode(mb_convert_encoding($url, 'gb2312', 'utf-8')); $a = 配列("%3A", "%2F", "%40"); $b = 配列(":", "/", "@"); $url = str_replace($a, $b, $url); $url を返す } $url="ftp://ud03:password@s./中文/中文.rar"; エコーパースURL($url); //ftp://ud03:password@s./%D6%D0%CE%C4/%D6%D0%CE%C4.rar ?> JavaScript での URL エンコード: | 例: %E4%B8%AD%E6%96%87-_.%20%E4%B8%AD%E6%96%87-_.%20
例: /%E4%B8%AD%E6%96%87.rarhttp%3A%2F%2Fs.%2F%E4%B8%AD%E6%96%87.rar
次のように: 配信ページは最初に 04ie.com: td.php?id=".urlencode('中国語')." によってエンコードされ、ページはデコードのために受け入れられます: urldecode(id).".
機能は後ほど付けます
コードは次のとおりです
コードをコピー
if (preg_match("/^([".chr(228)."-".chr(233)."]{1} [".chr(128)."-".chr(191)."]{ 1}[".chr(128)."-".chr(191)."]{1})+$/",$msg)) //$msg が UTF-8 エンコードの場合 | {|
|
true