欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【PHP中GBK和UTF8编码处理】,下面是详细的分享!
PHP中GBK和UTF8编码处理
一、编码范围
1. GBK (GB2312/GB18030)
x00-xff GBK双字节编码范围
x20-x7f ASCII
xa1-xff 中文
x80-xff 中文
2. UTF-8 (Unicode)
u4e00-u9fa5 (中文)
x3130-x318F (韩文
xAC00-xD7A3 (韩文)
u0800-u4e00 (日文)
ps: 韩文是大于[u9fa5]的字符
正则例子:
PLAIN TEXT
PHP:
preg_replace("/([x80-xff])/","",$str);
preg_replace("/([u4e00-u9fa5])/","",$str);
二、代码例子
PLAIN TEXT
PHP:
//判断内容里有没有中文-GBK (PHP)
function check_is_chinese($s){
return preg_match('/[x80-xff]./', $s);
}
//获取字符串长度-GBK (PHP)
function gb_strlen($str){
$count=0;
for($i=0; $i<strlen($str); $i++){
$s=substr($str, $i, 1);
if (preg_match("/[x80-xff]/", $s)) ++$i;
++$count;
}
return $count;
}
//截取字符串字串-GBK (PHP)
function gb_substr($str, $len){
$count=0;
for($i=0; $i<strlen($str); $i++){
if($count==$len) break;
if(preg_match("/[x80-xff]/", substr($str, $i, 1))) ++$i;
++$count;
}
return substr($str, 0, $i);
}
//统计字符串长度-UTF8 (PHP)
function utf8_strlen($str) {
$count=0;
for($i=0; $i <strlen($str); $i++){
$value=ord($str[$i]);
if($value> 127) {
$count++;
if($value>=192 && $value <=223) $i++;
elseif($value>=224 && $value <=239) $i=$i + 2;
elseif($value>=240 && $value <=247) $i=$i + 3;
else die('Not a UTF-8 compatible string');
}
$count++;
}
return $count;
}
//截取字符串-UTF8(PHP)
function utf8_substr($str,$position,$length){
$start_position=strlen($str);
$start_byte=0;
$end_position=strlen($str);
$count=0;
for($i=0; $i <strlen($str); $i++){
if($count>=$position && $start_position> $i){
$start_position=$i;
$start_byte=$count;
}
if(($count-$start_byte)>=$length) {
$end_position=$i;
break;
}
$value=ord($str[$i]);
if($value> 127){
$count++;
if($value>=192 && $value <=223) $i++;
elseif($value>=224 && $value <=239) $i=$i + 2;
elseif($value>=240 && $value <=247) $i=$i + 3;
else die('Not a UTF-8 compatible string');
}
$count++;
}
return(substr($str,$start_position,$end_position-$start_position));
}
//字符串长度统计-UTF8 [中文3个字节,俄文、韩文占2个字节,字母占1个字节] (Ruby)
def utf8_string_length(str)
temp=CGI::unescape(str)
i=0;
j=0;
temp.length.times{|t|
if temp[t] <127
i +=1
elseif temp[t]>=127 and temp[t] <224
j +=1
if 0==(j % 2)
i +=2
j=0
end
else
j +=1
if 0==(j % 3)
i +=2
j=0
end
end
}
return i
}
//判断是否是有韩文-UTF-8 (javascript)
function checkKoreaChar(str) {
for(i=0; i<str.length; i++) {
if(((str.charCodeAt(i)> 0x3130 && str.charCodeAt(i) <0x318F) || (str.charCodeAt(i)>=0xAC00 && str.charCodeAt(i) <=0xD7A3))) {
return true;
}
}
return false;
}
//判断是否有中文字符-GBK (javascript)
function check_chinese_char(s){
return (s.length !=s.replace(/[^x00-xff]/g,"**").length);
}
以上所分享的是关于PHP中GBK和UTF8编码处理,下面是编辑为你推荐的有价值的用户互动:
相关问题:PHP相关!gbk字符编码转换utf8以及json处理
答:icon('GBK','UTF-8',$str); 不知道记错没,好像是这个。 键值是null是什么意思?json_encode 后的字符串是null还是前台接收到的是null? >>详细
相关问题:PHP中GBK和UTF8编码是怎么回事
答:GBK编码,是中国通用,UTF-8是国际通用 GBK是定长编码,占两个字节,UTF-8是变长编码,占3到6字节。不过目前来说UTF-8只用到三字节,还没扩展到3字节以上 如果你还需要进一步理解,请搜索它们各自的编码规则 >>详细
相关问题:PHP源代码GBK和UTF8,做站用那个比较好
答:当然用utf-8, 全世界通用, 而且ajax的默认编码也是utf-8, 如果你用gbk, 那还要多很多转换 >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
