ホームページ php教程 php手册 用php实现gb2312和unicode间的编码转换_php基础

用php实现gb2312和unicode间的编码转换_php基础

May 17, 2016 am 09:13 AM
unicode

gb2312 和 unicode 间的编码转换
下面的例子是将 gb2312 转换为 "全"这种形式
php4.3.1以后的iconv函数很好用的,只是需要自己写一个uft8到unicode的转换函数
查表(gb2312.txt)也行

复制代码 代码如下:


$text = "脚本之家";
preg_match_all("/[\x80-\xff]?./",$text,$ar);
foreach($ar[0] as $v)
echo "".utf8_unicode(iconv("GB2312","UTF-8",$v)).";";
?>

// utf8 -> unicode
function utf8_unicode($c) {
switch(strlen($c)) {
case 1:
return ord($c);
case 2:
$n = (ord($c[0]) & 0x3f) $n += ord($c[1]) & 0x3f;
return $n;
case 3:
$n = (ord($c[0]) & 0x1f) $n += (ord($c[1]) & 0x3f) $n += ord($c[2]) & 0x3f;
return $n;
case 4:
$n = (ord($c[0]) & 0x0f) $n += (ord($c[1]) & 0x3f) $n += (ord($c[2]) & 0x3f) $n += ord($c[3]) & 0x3f;
return $n;
}
}
?>

下面的例子是利用php将"全"这中编码转换为gb2312.
复制代码 代码如下:

$str = "TTL全天候自动聚焦";
$str = preg_replace("|([0-9]{1,5});|", "\".u2utf82gb(\\1).\"", $str);
$str = "\$str=\"$str\";";
eval($str);
echo $str;
function u2utf82gb($c){
$str="";
if ($c $str.=$c;
} else if ($c $str.=chr(0xC0 | $c>>6);
$str.=chr(0x80 | $c & 0x3F);
} else if ($c $str.=chr(0xE0 | $c>>12);
$str.=chr(0x80 | $c>>6 & 0x3F);
$str.=chr(0x80 | $c & 0x3F);
} else if ($c $str.=chr(0xF0 | $c>>18);
$str.=chr(0x80 | $c>>12 & 0x3F);
$str.=chr(0x80 | $c>>6 & 0x3F);
$str.=chr(0x80 | $c & 0x3F);
}
return iconv('UTF-8', 'GB2312', $str);
}
?>

或者是
复制代码 代码如下:

function unescape($str) {
$str = rawurldecode($str);
preg_match_all("/(?:%u.{4})|.{4};|\d+;|.+/U",$str,$r);
$ar = $r[0];
print_r($ar);
foreach($ar as $k=>$v) {
if(substr($v,0,2) == "%u")
$ar[$k] = iconv("UCS-2","GB2312",pack("H4",substr($v,-4)));
elseif(substr($v,0,3) == "")
$ar[$k] = iconv("UCS-2","GB2312",pack("H4",substr($v,3,-1)));
elseif(substr($v,0,2) == "") {
echo substr($v,2,-1)."
";
$ar[$k] = iconv("UCS-2","GB2312",pack("n",substr($v,2,-1)));
}
}
return join("",$ar);
}
$str = "TTL全天候自动聚焦";
echo unescape($str); //out TTL全天候自动聚焦

利用javascript来转换
复制代码 代码如下:



Unicode

文本原型:




转换代码:




正向转换





下面是一个显示所有全角半角的字体的查看例子
复制代码 代码如下:


<script> <BR>function showUni(min,max){ <BR>show.document.open(); <BR>show.document.writeln("<style>body{font-size:9pt;word-break:break-all;}"); <BR>show.document.writeln(min + " - " + max + "<br><br>"); <BR>var i=0; <BR>for(i=min;i<=max;i++){ <BR>show.document.write("&#" + i + ";"); <BR>} <BR>show.document.close(); <BR>} <BR></script>








自定义: -





下面是一个查表(gb2312),转换gb2312到utf8的例子, 现在有iconv函数,这个已经没有太大的意义了,
复制代码 代码如下:


function gb2utf8($gb){
if(!trim($gb)) return $gb;
$filename="gb2312.txt";
$tmp=file($filename);
$codetable=array();
while(list($key,$value)=each($tmp))
$codetable[hexdec(substr($value,0,6))]=substr($value,7,6);
$utf8="";
while($gb) {
if (ord(substr($gb,0,1))>127) {
$this=substr($gb,0,2);
$gb=substr($gb,2,strlen($gb)-2);
$utf8.=u2utf8(hexdec($codetable[hexdec(bin2hex($this))-0x8080]));
}else{
$this=substr($gb,0,1);
$gb=substr($gb,1,strlen($gb)-1);
$utf8.=u2utf8($this);
}
}
return $utf8;
}
function u2utf8($c){
$str="";
if ($c $str.=$c;
} else if ($c $str.=chr(0xC0 | $c>>6);
$str.=chr(0x80 | $c & 0x3F);
} else if ($c $str.=chr(0xE0 | $c>>12);
$str.=chr(0x80 | $c>>6 & 0x3F);
$str.=chr(0x80 | $c & 0x3F);
} else if ($c $str.=chr(0xF0 | $c>>18);
$str.=chr(0x80 | $c>>12 & 0x3F);
$str.=chr(0x80 | $c>>6 & 0x3F);
$str.=chr(0x80 | $c & 0x3F);
}
return $str;
}
?>
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPを深く理解する:JSON Unicodeを中国語に変換する実装方法 PHPを深く理解する:JSON Unicodeを中国語に変換する実装方法 Mar 05, 2024 pm 02:48 PM

PHP の深い理解: JSONUnicode を中国語に変換する実装方法 開発中、JSON データを処理する必要がある状況によく遭遇しますが、特に変換する必要がある場合、JSON 内の Unicode エンコードによっていくつかのシナリオで問題が発生します。 Unicode エンコードを漢字に変換する場合。 PHP では、この変換処理を実現するためのメソッドがいくつかありますが、以下では一般的なメソッドを紹介し、具体的なコード例を示します。まず、JSON の Un について理解しましょう

Unicodeを中国語に変換する方法 Unicodeを中国語に変換する方法 Dec 14, 2023 am 10:57 AM

Unicode は、さまざまな言語や記号を表すために使用される文字エンコード標準です。 Unicode エンコードを中国語の文字に変換するには、Python の組み込み関数 chr() および ord() を使用できます。

Eclipseの中国語文字化け問題を解決する方法を試す Eclipseの中国語文字化け問題を解決する方法を試す Jan 03, 2024 pm 05:28 PM

Eclipseで中国語の文字化けに悩んでいませんか?これらのソリューションを試すには、特定のコード サンプルが必要です。 1. 背景の紹介 コンピューター技術の継続的な発展に伴い、ソフトウェア開発において中国語がますます重要な役割を果たしています。しかし、多くの開発者は、中国の開発に Eclipse を使用するとコードの文字化けの問題に遭遇し、作業効率に影響を及ぼします。次に、この記事では、一般的なコードの文字化けの問題をいくつか紹介し、読者が Eclipse での中国語の文字化けコードの問題を解決できるように、対応する解決策とコード例を示します。 2. 一般的なコード文字化けの問題と解決策ファイル

PHP チュートリアル: JSON Unicode を漢字に変換する方法 PHP チュートリアル: JSON Unicode を漢字に変換する方法 Mar 05, 2024 pm 06:36 PM

JSON (JavaScriptObjectNotation) は、Web アプリケーション間のデータ交換に一般的に使用される軽量のデータ交換形式です。 JSON データを処理するとき、Unicode でエンコードされた中国語の文字 (「u4e2du6587」など) が頻繁に発生するため、それらを読み取り可能な中国語の文字に変換する必要があります。 PHP では、いくつかの簡単なメソッドを通じてこの変換を実現できます。次に、JSONUnico を変換する方法を詳しく説明します。

Java が MySQL データベースに接続するときに発生する一貫性のない Unicode 文字セット エンコーディングの問題を解決する Java が MySQL データベースに接続するときに発生する一貫性のない Unicode 文字セット エンコーディングの問題を解決する Jun 10, 2023 am 11:39 AM

ビッグ データやクラウド コンピューティングなどのテクノロジーの発展に伴い、データベースは企業情報化の重要な基盤の 1 つになりました。 Java で開発されたアプリケーションでは、MySQL データベースに接続することが標準になっています。ただし、このプロセスでは、一貫性のない Unicode 文字セットのエンコーディングという厄介な問題に遭遇することがよくあります。これは開発効率に影響を与えるだけでなく、アプリケーションのパフォーマンスと安定性にも影響します。この記事では、この問題を解決し、Java が MySQL データベースによりスムーズに接続できるようにする方法を紹介します。 1. ユニコード

Unicode と ASCII の違いは何ですか Unicode と ASCII の違いは何ですか Sep 06, 2023 am 11:56 AM

Unicode と ASCII の違いには、エンコード範囲の違い、記憶域の違い、互換性の違いなどが含まれます。詳細な紹介: 1. エンコード範囲が異なります。ASCII のエンコード範囲は 0 ~ 127 で、主に英語の文字を表すために使用されます。Unicode のエンコード範囲はさらに広く、ほぼすべての言語の文字を表すことができます。2. ストレージASCII は通常 1 バイトを使用して文字を格納しますが、Unicode は 2 バイト以上を使用して文字を格納する場合があります; 3. 互換性の違いなど

Java で Unicode エージェント プログラミングを使用する方法 Java で Unicode エージェント プログラミングを使用する方法 May 06, 2023 pm 08:43 PM

シーケンシャル アクセス シーケンシャル アクセスは、Java 言語で文字列を処理するための基本操作です。このアプローチでは、入力文字列内の各文字は、最初から最後まで、または場合によっては最後から最初まで順番にアクセスされます。このセクションでは、シーケンシャル アクセス方式を使用して文字列から 32 ビット コード ポイント配列を作成する 7 つの技術例について説明し、その処理時間を見積もります。例 1-1: ベンチマーク (サロゲート ペアのサポートなし) リスト 1 では、サロゲート ペアをまったく考慮せずに、16 ビットの char 型の値を 32 ビットのコード ポイント値に直接割り当てています。ペア int[]toCodePointArray(Stringstr) {//例 1-1intlen=str.length();//t

PHPでJSON Unicodeを中国語に変換する方法 PHPでJSON Unicodeを中国語に変換する方法 Jan 19, 2023 am 09:54 AM

PHP で json Unicode を中国語に変換する方法: 1. 「json_encode($log['result_data'],JSON_UNESCAPED_UNICODE);」メソッドを使用して変換します。 2. 「function unicodeDecode($unicode_str){...}」を使用します。変換する方法は以上です。

See all articles