原理は、中国語の文字を 16 進数に変換し、特定の規則に従って文字列を結合して、文字のエンコードとデコードを実現し、URL データ送信時の文字の整合性と互換性を確保することです。主に、中国語の文字のエンコード条件について説明します。
まず、FireFoxブラウザは中国語の文字をエンコードします
Firefoxブラウザに中国語の文字を入力すると、次のようにURLエンコードが自動的に実装されます
Enterキーを押す前
Enterキーを押した後
第二に、urlencode() 関数の原理
urlencode() 関数は、主に URL 文字列のエンコードに使用されます
例は次のとおりです
コードをコピーします。コードは次のとおりです:
echo urlencode('Don't be執着する兄弟');//出力: %B2%BB%D2%AA%C3%D4%C1%B5%B8%E7
urlencode() 関数の原理は、まず中国語の文字を 10 個の 16 進数に変換し、次に各文字の前に識別子 % を追加することです。コードは次のとおりです。コードをコピーします
コードは次のとおりです:
$string = "私に執着しないでください"; $length = strlen($string); //10 進数 for($i=0;$iif(ord($string[$i])>127){
$result[] = ord($string[ $i]).' '.ord($string[++$i]);
var_dump($result);
//Hex
$strings = array(); v){
$dec =explode(" ",$v);
$strings [] = "%".dechex($dec[0])." "."%".dechex($dec[1]) ;
}
上記のコードは、記事「漢字ベース変換原理の PHP 実装」の漢字の 16 進数への変換原理の分析で詳しく説明されています。 、同時に、それぞれの文字の前に特別な識別子 % を追加すると、urlencode() 関数の機能が実現されます。出力結果は次のとおりです
次に、出力結果を urlencode() を使用して直接エンコードされた文字と比較します。上記のように: %B2%BB% D2%AA%C3%D4%C1%B5%B8%E7
上記の例からわかるように、urlencode() 関数を使用して中国語の文字をエンコードすると、本質的に文字は次のように変換されます。 16 進数で最初の文字の左側に a を追加します 特別な識別子 %
三、urldecode() 関数の原則
urldecode() 関数を使用して、エンコードされた URL 文字列をデコードします。例は次のとおりです
echo urldecode ('%B2%BB%D2%AA%C3% D4%C1%B5%B8%E7');//出力: 私に執着しないでください
urldecode() 関数は urlencode() 関数の反対ですエンコードされた URL 文字列をデコードするために使用されます。原理は、文字列を 16 進数に変換し、文字列をデコードするカスタム関数を実装することもできます
。
コードは次のとおりです:
$string = '%B2%BB%D2%AA%C3%D4 %C1%B5%B8%E7';
$length = strlen($string); array();
for($i=0;$iif($ string[$i] == '%'){
$hexs[] = $string[++$ i].$string[++$i];
}
}
$num = count($hexs); for($i=0;$iecho chr(hexdec( $hexs[$i])).chr(hexdec($hexs[++$i])));
上記のコード例は、まず文字列のルールに従って各文字の 16 進数を抽出し、次に hexdec() 関数を使用して 16 進数を 10 進数に変換し、次に chr() 関数を使用して 10 進数を文字に変換して、次のことを実現します。 16 進数 16 進数を文字に変換します。出力結果は以下の通りです
4、urldecode() と urlencode() 関数の説明
urlencode
(PHP 3, PHP 4, PHP 5)
urlencode -- URL 文字列をエンコードします
説明
string urlencode ( string str )
-_ を除くすべての非英数字文字がパーセント記号 (%) に置き換えられ、その後に 2 つの 16 進数が続き、スペースがプラス記号 (+) としてエンコードされた文字列を返します。このエンコーディングは、WWW フォーム POST データのエンコーディングと同じであり、application/x-www-form-urlencoded メディア タイプと同じエンコーディングです。歴史的な理由により、このエンコードは、スペースをプラス記号 (+) としてエンコードする点で RFC1738 エンコード (rawurlencode() を参照) とは異なります。この関数は、文字列のエンコードと URL のリクエスト部分での使用を容易にし、変数を次のページに渡すことも容易にします
urldecode
(PHP 3, PHP 4, PHP 5)
urldecode -- デコードされたエンコードされた URL string
説明
string urldecode ( string str )
指定されたエンコードされた文字列内の任意の %## をデコードします。デコードされた文字列を返します。
五、参考リソース
urlencode()の説明
urldecode()の説明
http://www.bkjia.com/PHPjc/324688.htmlwww.bkjia.com本当http://www.bkjia.com/PHPjc/324688.html技術記事原則は、中国語の文字を 16 進数に変換し、特定のルールに従って文字列を結合して文字のエンコードとデコードを実現し、URL データの送信中に文字の整合性と互換性を確保することです...