PHPのアドレスバーの中国語$_GETが文字化けする、urlencodeとurldecodeの使い方を詳しく解説
URLエンコード
構文: string urlencode(string str);
戻り値: String
関数型: エンコード処理
例:
PHPのgetメソッドでURLから取得した中国語文字化け問題について
別メソッドコードを使用
/**
* マルチバイト文字列エンコーディング変換関数
*
* @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 つのバージョンがサポートされています。
//労働組合ログイン
$ゴンヒ = $_GET['gh'];
取得した $gonghui は gb2312 でエンコードされ、文字化けを表示するために utf-8 Web ページに出力されます
が
に変更されました
//ユニオンログインパラメータ $gonghui = $_GET['gh'];
$gonghui = mb_convert_encoding($gonghui, "UTF-8", "gb2312");
ページ全体を変換
この方法は、すべてのコーディング環境に適しています。このように、最初の 128 文字 (表示文字) 以外のすべての文字セットは NCR で表されます (「漢字」などの数字参照は「漢字」に変換されます)。このようなエンコードをページ上で使用できます。通常の表示環境であれば。
次の 3 行のコードを php ファイルの先頭に追加します。
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("四川省");
aaa
//方法 2 Base64_encode
$test="四川省";
$test1=base64_encode($test);
echo 'aaa ?>
別のページはbase64_decodeを使用してデコードされます
base64_decode($region);
//方法 3: サーバーを中国語に対応させる
[root@dhcp ~]# ロケール
lang=zh_cn.utf-8
lc_ctype="zh_cn.utf-8"
lc_numeric="zh_cn.utf-8"
lc_time=c
lc_collate=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 ~]#