ホームページ  >  記事  >  バックエンド開発  >  Unicode エンコード コンバーター php utf-8 から unicode 関数へのページ 1/2

Unicode エンコード コンバーター php utf-8 から unicode 関数へのページ 1/2

WBOY
WBOYオリジナル
2016-07-29 08:38:151313ブラウズ

UTF エンコード
UTF-8 は、UCS を 8 ビット単位でエンコードします。 UCS-2 から UTF-8 へのエンコード方法は次のとおりです。
UCS-2 エンコード(16 進数)
UTF-8 バイトストリーム(バイナリ)
0000 - 007F
0xxxxxxx
0080 - 07FF
110xxxxx 10xxxxxx
0800 - FFFF
1110xxxx 10xxxxxx 10xxxxxx
たとえば、「中国語」文字の Unicode エンコードは 6C49 であり、6C49 は 0800 から FFFF の間にあるため、3 バイトのテンプレートを使用する必要があります: 1110xxxx 10xxxxxx 10xxxxxx。 6C49 をバイナリで書くと、0110 110001 001001 となります。このビット ストリームを使用してテンプレート内の x を順番に置き換えると、11100110 10110001 10001001、つまり E6 B1 89 が得られます。
ついにunicodeとutf8間の変換が完了しました。
utf-8でエンコードされた文字chが3バイトの場合。 xx yy zz
AND xx と 1F で a を取得
AND yy と 7F で b を取得
AND zz と 7F で c を取得
(64a+b)*64+c = ch (Unicode エンコーディング)
echo.php何もない。ほんの少しの機能です。
");
//Unicode ファイルの書き込み
$ucs2data = utf8ToUnicode($data,"little");
$endian = chr(0xFE).chr(0xFF);
$endian = chr(0xFF).chr( 0xFE );
$rt = file_put_contents ("ucs2.txt", $endian.$ucs2data);
//19:32、utf8toUnicode 関数は成功しました
//20:09。 . .
//ビッグ エンディアン モードで保存された Unicode 文字列は ue または editplus では認識できません。
//utf8 ファイル
$utf8data = unicodeToUtf8 ucs2data); // 20:52。文字列を utf8 コードに変換します。
$rt = file_put_contents ( "utf8.txt", $utf8data);
$esc = utf8Escape($data);
$esc = phpEscape($esc); ;
/**
* この関数は、utf8 エンコードされた文字列を Unicode エンコードされた文字列に変換します。
* パラメータ str、utf8 エンコードされた文字列。
* パラメータの順序、データの格納形式、ビッグ エンディアンかリトル エンディアンか、デフォルトの Unicode 格納順序は少です
* 例: 「big」の Unicode コードは 5927 です。リトル モードのストレージは 27 59 です。ビッグ モードでは、順序は変更されません: 59 27.
* リトル フォーマット ファイルの先頭には FF FE が必要です。ビッグフォーマットで保存されたファイルは FE FF で始まります。さもないと。深刻な混乱が生じるだろう。
* この関数は文字を変換するだけであり、ヘッダーの追加は行いません。
* iconvで変換された文字列はビッグエンディアンで格納されます。
* 変換された文字列である ucs2string を返します。
* 小言をありがとう (xuzuning)
*/
function utf8ToUnicode($str,$order="little")
{
$n=strlen($str ); ;$i0x80) { //110xxxxx 10xxxxxx
$a = (ord($str[$i]) & 0x3F )0x80 && ord($str[$i+2])> 0x80) { //1110xxxx 10xxxxxx 10xxxxxx
$a = (ord($str[$i]) & 0x1F) utf8 エンコード文字列に変換します
* パラメータ str、unicode エンコード文字列
* パラメータ順序、unicode 文字列 格納順序はビッグ エンディアンまたはリトル エンディアンです
* を返します。 utf8string、変換された文字列。
*
*/
function unicodeToUtf8($str,$order="little")
{
$utf8string =""
$n=strlen($str); .
$i++; // 2 バイトは Unicode 文字を表します。
if($val utf8string .= $c;
} // end func
/*
* utf8 でエンコードされた文字列をエスケープに相当する Unicode パターンにエンコードします
* utf8 コードのみが受け入れられる理由は、utf8 コードと Unicode の間には数式変換しかなく、他のコードはコード テーブルを参照して変換する必要があるためです
* utf8 コードを見つける通常の方法が完全に混乱しているかどうかはわかりません
* ただし、コード値を計算するために utf2ucs を呼び出すのは非効率的ですが、コードは明確であり、計算プロセスを埋め込むのは簡単ではありません。
*/
function utf8Escape($str) {
preg_match_all("/[\xC0-\xE0].|[\xE0-\xF0]..|[\x01-\x7f]+/",$ str ,$r);
$ar = $r[0];
foreach($k=>$v) {
$ord = ord($v[0]) );
if( $ordutf8 コード
$ar[$k] = "%u".utf2ucs($v);
}
elseif ($ordutf8 コード
$ar[$k] = "%u".utf2ucs ( $v);
}
}//foreach
return join("",$ar);
/**
*
* utf8 でエンコードされた文字を ucs-2 エンコードに変換します
*文字の Unicode コード値を返します。コード値がわかったら、chr を使用して文字を取得できます。
*
* 原理: Unicode を utf-8 コードに変換するアルゴリズムは、次のとおりです。はこの関数、固定ヘッド位置と逆和です。
*/
function utf2ucs($str){
$n=strlen($str);
if ($n=3) {
$highCode = ord($str[0]);
$midCode = ord($) str[1]);
$a = 0x1F & $highCode
$c = 0x7F & $ucsCode; (64*$a + $b)*64 + $c;
}
elseif ($n==2) {
$highCode = ord($str[0]);
$lowCode = ord($str[1]) ]);
$a = 0x3F & $highCode; //0x3F は 0xC0$b = 0x7F & $lowCode の補数です
$ucsCode = 64*$a + $b; }
elseif($n==1) {
$ucscode = ord($str);
}
return dechex($ucsCode);
/*
* 使用法: この関数は、JavaScript のエンコーディングを反転するために使用されます。関数文字の後にエスケープします。
* キーの通常の検索に問題があるかどうかはわかりません
* パラメータ: JavaScript でエンコードされた文字列。
* 例: unicodeToUtf8("%u5927")= big
* 2005-12-10
*
*/
function phpUnescape($escstr){
preg_match_all("/%u[0-9A-Za-z] { 4}|%.{2}|[0-9a-zA-Z.+-_]+/",$escstr,$matches); //prt($matches);
$ar = &$matches[ 0 ];
$c = "";
foreach($ar as $val){
if (substr($val,0,1)!="%") { //英数字 +-_.ascii の場合コード
$c .=$val;
}
elseif (substr($val,1,1)!="u") { //非英数字 +-_ の場合
$x = hexdec (substr ($val,1,2));
$c .=chr($x);
}
else { //0xFF より大きいコードの場合
$val = intval($val,2 ),16) ;
if($val %u".bin2hex( iconv( 'gbk' ,"UCS-2",$chars[$i].$chars[$i+1] ) );
$i++;
}
} //foreach
return $ar
}
?>

現在のページ 1/2 12次のページ

上記では、Unicode エンコーディング コンバーター PHP utf-8 から Unicode 関数へのコンバーターの内容をページ 1/2 で紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。


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