ホームページ  >  記事  >  バックエンド開発  >  PHPのURLアドレスバーで送信される中国語の文字化けの解決策集

PHPのURLアドレスバーで送信される中国語の文字化けの解決策集

高洛峰
高洛峰オリジナル
2017-01-12 15:02:241663ブラウズ

PHPのアドレスバーの中国語の$_GETが文字化けする、urlencodeとurldecodeの使い方を詳しく解説
URLエンコード
構文: string urlencode(string str);
戻り値: string
関数の種類: エンコード処理
例:

<?php
$ChineseName="我的名字,是中文的哦";
$EncodeStr=urlencode($ChineseName);
echo "<a href=/cgi/personal.cgi?name=$EncodeStr>我的名字</a>";
?>

URLデコード
URLエンコードされた文字列を復元します。
構文: string urldecode(string str);
戻り値: String
関数の種類: エンコード処理
例:
前に渡された中国語を加工して表示

<?php
$DecodeStr=urldecode($_GET[&#39;name&#39;]);//你可能不用解码都可以,因为浏览器会自动帮你解码
echo $DecodeStr;
?>

getメソッドでURLから取得した中国語の文字化けコードについてPHP の問題

$gonghui = iconv("gb2312","UTF-8",$gonghui); 別のメソッド コード
/**
* マルチバイト文字列エンコーディング変換関数
*
* @param string str エンコードして変換する必要がある文字列
* @param string to_encoding は、gb2312、gbk、utf-8 などの特定のエンコーディングへの変換を指定します, など
* @parammixed from_encodingはJIS、eucjp-win、sjis-winの混合エンコードを同時に指定するなど、元の文字列のエンコードを混合指定します
* @return string
string mb_convert_encoding ( string str, string to_encoding [、混合 from_encoding] )
**/
mb_convert_encoding 関数は、PHP の内部マルチバイト文字列エンコーディング変換関数です、必要に応じてほぼすべてのエンコーディングをサポートできます。 PHP >= 4.0.6、5 つのバージョンがサポートされています。

reg.php?gh=XX を直接取得します;

// Union ログインパラメータ

$gonghui = $_GET['gh'];

取得された $gonghui は gb2312 でエンコードされ、utf-8 Web ページに出力されます。表示用に文字化けしたコード

に変更します // Union ログイン パラメータ
$gonghui = $_GET['gh'];
$gonghui = mb_convert_encoding($gonghui, "UTF-8", "gb2312");

表示は通常になります

ページ全体を変換します

この方法は、すべてのコーディング環境に適しています。このように、最初の 128 文字 (表示文字) 以外のすべての文字セットは NCR で表されます (「漢字」などの数字参照は「漢字」に変換されます)。このようなエンコードをページ上で使用できます。通常の表示環境であれば。

次の 3 行のコードを php ファイルの先頭に追加します。

mb_internal_encoding("gb2312");  // 这里的gb2312是你网站原来的编码     
mb_http_output("HTML-ENTITIES");     
ob_start(&#39;mb_output_handler&#39;);

mb_convert_encoding 関数を使用するには、PHP の mbstring (マルチバイト文字列) 拡張機能を有効にする必要があります。

PHP の mbstring 拡張機能が有効になっていない場合は、PHP が拡張機能をサポートするように次の設定を行う必要があります。

1. Windows サーバー環境
php.ini ファイルを編集し、extension=php_mbstring.dll の前の ; を削除し、Web サーバーを再起動します。

2. Linux サーバー環境
コンパイルおよび設定時に --enable-mbstring=cn コンパイル パラメーターを追加し、PHP をコンパイルしてインストールします。

他のネチズンからの 3 番目の参考方法:
//方法 1 urldecode
$url = 'aaa.php?region='.urldecode("四川省");
e9b9b1851be505d441650ab50014f556">aaa 5db79b134e9f6b82c0b36e0489ee08ed

//方法 2 Base64_encode

d2b1ec4c1d566328254363b9491dd9ebaaa 5db79b134e9f6b82c0b36e0489ee08ed';
?>

base64_decode を使用して別のページがデコードされます

base64_decode($region);

/ /Method 3: サーバーを中国語に対応させる

[root@dhcp ~]# locale

lang=zh_cn.utf-8
lc_ctype="zh_cn.utf-8"
lc_numeric="zh_cn.utf-8"
lc_time=c
lc_collat​​e=c
lc_monetary="zh_cn.utf-8"
lc_messages="zh_cn.utf-8"
lc_paper="zh_cn.utf-8"
lc_name="zh_cn.utf-8"
lc_address="zh_cn. utf-8"
lc_telephone="zh_cn.utf-8"
lc_measurement="zh_cn.utf-8"
lc_identification="zh_cn.utf-8"
lc_all=
[root@dhcp ~]#

その他の php の場合関連記事は、PHP 中国語 Web サイトに注目してください。

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