php如何输出gb2312编码对应的汉字?
例如在gb2312编码中啊的编码是B0A0,我用echo(B0A0)输出的不是啊,我该怎么输出?多谢!...
例如在gb2312编码中 啊 的编码是 B0A0 ,我用echo(B0A0)输出的不是啊,我该怎么输出?多谢!
展开
9个回答
展开全部
用chr函数输出。别听1-2楼瞎说!他们都没做过PHP开发。
汉字由于是双字节,所以要一个字节一个字节的输出,并且编码是16进制的,因此需要按下面这样输出。
复制下面的代码运行:
<?php
$chars = '你好';
$text = '';
$codes = array ();
for ($i = 0; $i < strlen( $chars ); $i++) {
$c = ord ( substr ( $chars, $i, 1 ) );
$text .= chr ( $c );
$codes [] = $c;
}
echo ( $text );
?>
同时,请注意,php对于汉字的ASCII码根据PHP文件的编码不同,是不一样的。要获取其编码,使用ord()函数,但是ord函数只返回首个字符的ASCII码
如果你知道 ASCII码,也可以通过 pack 函数打包以后作为字符串输出
汉字由于是双字节,所以要一个字节一个字节的输出,并且编码是16进制的,因此需要按下面这样输出。
复制下面的代码运行:
<?php
$chars = '你好';
$text = '';
$codes = array ();
for ($i = 0; $i < strlen( $chars ); $i++) {
$c = ord ( substr ( $chars, $i, 1 ) );
$text .= chr ( $c );
$codes [] = $c;
}
echo ( $text );
?>
同时,请注意,php对于汉字的ASCII码根据PHP文件的编码不同,是不一样的。要获取其编码,使用ord()函数,但是ord函数只返回首个字符的ASCII码
如果你知道 ASCII码,也可以通过 pack 函数打包以后作为字符串输出
展开全部
"啊"字的gb码不是B0A0,而是B0A1。 害我奇怪了一阵
如果存在"所输入16进制串是正确无误"的前提:
//这个是最直接、最标准的转换做法,而且是可逆的
echo pack('H*',‘B0A1’); //显示, 啊
$c=unpack('H*','啊'); //逆转换
echo $c[1]; //显示 b0a1
如果存在"所输入16进制串是正确无误"的前提:
//这个是最直接、最标准的转换做法,而且是可逆的
echo pack('H*',‘B0A1’); //显示, 啊
$c=unpack('H*','啊'); //逆转换
echo $c[1]; //显示 b0a1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该是用urlencode进行过编码,B0A0 不是 啊,啊 应该是 B0A1
function addPercent($str) {
$data = '';
for($i = 0; $i < strlen($str); $i+=2) {
$data .= "%".$str[$i].$str[$i+1];
}
return $data;
}
$string = addPercent('B0A1');
echo urldecode($string);
// 输出 啊
function addPercent($str) {
$data = '';
for($i = 0; $i < strlen($str); $i+=2) {
$data .= "%".$str[$i].$str[$i+1];
}
return $data;
}
$string = addPercent('B0A1');
echo urldecode($string);
// 输出 啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
试一下代码:
$str = "这%里是^测&试*中$心,欢.迎e你4的6到k来,我r们awe这y里wet一ef直在努力gr着找寻最佳gr的伙伴,希望您的$$%加盟可以@推动我们GH团队高速发展!";
$code = "/[".chr(0xa1)."-".chr(0xff)."]+/";
preg_match_all($code,$str, $arr); //GB2312汉字字母数字下划线正则表达式
print_r($arr);
$str = "这%里是^测&试*中$心,欢.迎e你4的6到k来,我r们awe这y里wet一ef直在努力gr着找寻最佳gr的伙伴,希望您的$$%加盟可以@推动我们GH团队高速发展!";
$code = "/[".chr(0xa1)."-".chr(0xff)."]+/";
preg_match_all($code,$str, $arr); //GB2312汉字字母数字下划线正则表达式
print_r($arr);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先进行转换编码格式,有对应的函数,你去网上查一下就知道了!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询