php用gb2312,用php实现gb2312和unicode间的编码转换

该博客详细介绍了如何在PHP中进行GB2312到Unicode以及Unicode到UTF-8的编码转换。通过使用iconv函数和自定义的转换函数,实现了字符串在不同编码格式间的转换。示例代码包括从GB2312到Unicode,以及从Unicode到GB2312的过程,适用于需要处理中文字符编码的场景。
摘要由CSDN通过智能技术生成

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) << 6;

$n += ord($c[1]) & 0x3f;

return $n;

case 3:

$n = (ord($c[0]) & 0x1f) << 12;

$n += (ord($c[1]) & 0x3f) << 6;

$n += ord($c[2]) & 0x3f;

return $n;

case 4:

$n = (ord($c[0]) & 0x0f) << 18;

$n += (ord($c[1]) & 0x3f) << 12;

$n += (ord($c[2]) & 0x3f) << 6;

$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 < 0x80) {

$str.=$c;

} else if ($c < 0x800) {

$str.=chr(0xC0 | $c>>6);

$str.=chr(0x80 | $c & 0x3F);

} else if ($c < 0x10000) {

$str.=chr(0xE0 | $c>>12);

$str.=chr(0x80 | $c>>6 & 0x3F);

$str.=chr(0x80 | $c & 0x3F);

} else if ($c < 0x200000) {

$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来转换

代码如下:

BODY {

FONT-SIZE: 9pt; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px;

}

input {

FONT-SIZE: 9pt; height: 13pt;

}

/*

This following code are designed and writen by Windy_sk

You can use it freely, but u must held all the copyright items!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: UNICODE 编码和解码可以通过 PHP 内置的函数 mb_convert_encoding 和 iconv 来实现编码: ``` $str = '你好'; $encoded = mb_convert_encoding($str, 'UTF-16', 'UTF-8'); ``` 解码: ``` $decoded = mb_convert_encoding($encoded, 'UTF-8', 'UTF-16'); ``` 或者: 编码: ``` $str = '你好'; $encoded = iconv('UTF-8', 'UTF-16', $str); ``` 解码: ``` $decoded = iconv('UTF-16', 'UTF-8', $encoded); ``` ### 回答2: 在PHP中,可以使用内置的函数来实现UNICODE编码和解码。 对于编码: 1. 首先,我们需要将字符串转换为UTF-8编码,以确保包含任何特殊字符。 2. 然后,使用mb_convert_encoding函数将UTF-8编码的字符串转换Unicode。 3. 最后,使用bin2hex函数将Unicode编码的字符串转换Unicode编码的16进制表示。 下面是一个示例代码片段,用于在PHP实现UNICODE编码: ```php $str = "你好,世界!"; // 要编码的字符串 // 转换为UTF-8编码 $str = mb_convert_encoding($str, 'UTF-8'); // 将UTF-8编码的字符串转换Unicode $str_unicode = mb_convert_encoding($str, 'UCS-2LE', 'UTF-8'); // 将Unicode编码的字符串转换Unicode编码的16进制表示 $str_unicode_hex = bin2hex($str_unicode); echo $str_unicode_hex; // 输出编码后的字符串 ``` 对于解码: 1. 首先,使用hex2bin函数将Unicode编码的16进制表示转换Unicode编码的字符串。 2. 然后,使用mb_convert_encoding函数将Unicode编码的字符串转换为UTF-8编码的字符串。 下面是一个示例代码片段,用于在PHP实现UNICODE解码: ```php $str_unicode_hex = "4f60597d65252c4e世界21"; // 要解码的Unicode编码的16进制表示 // 将Unicode编码的16进制表示转换Unicode编码的字符串 $str_unicode = hex2bin($str_unicode_hex); // 将Unicode编码的字符串转换为UTF-8编码的字符串 $str = mb_convert_encoding($str_unicode, 'UTF-8', 'UCS-2LE'); echo $str; // 输出解码后的字符串 ``` 通过以上代码示例,可以使用PHP实现UNICODE编码和解码。 ### 回答3: 使用PHP实现UNICODE编码和解码可以通过以下步骤实现: 1. 编码:将字符串转换UNICODE编码。 可以使用PHP内置的函数 `mb_convert_encoding` 来实现。使用这个函数,你可以将字符串从指定的字符集转换UNICODE编码。例如,将一个UTF-8编码的字符串转换UNICODE编码,可以使用以下代码: ```php $str = '你好'; $unicodeStr = mb_convert_encoding($str, 'unicode', 'utf-8'); echo $unicodeStr; ``` 这段代码将输出:`\u4f60\u597d`,其中`\u4f60`表示字符"你"的UNICODE编码,`\u597d`表示字符"好"的UNICODE编码。 2. 解码:将UNICODE编码转换为字符串。 可以使用PHP内置的函数 `json_decode` 来将UNICODE编码转换为字符串。 `json_decode` 函数默认会将UNICODE编码的字符串转换为UTF-8编码的字符串。例如,将一个UNICODE编码的字符串`\u4f60\u597d`转换为UTF-8编码的字符串,可以使用以下代码: ```php $str = '\u4f60\u597d'; $decodedStr = json_decode('"' . $str . '"'); echo $decodedStr; ``` 这段代码将输出:"你好"。 这就是使用PHP实现UNICODE编码和解码的基本步骤。你可以根据需要对其进行扩展和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值