PHP中GBK和UTF8編碼處理_PHP教程

來源:互聯網
上載者:User
一、編碼範圍
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]的字元

正則例子:
preg_replace("/([x80-xff])/","",$str);
preg_replace("/([u4e00-u9fa5])/","",$str);

二、代碼例子

//判斷內容裡有沒有中文-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 $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 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 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);
}

http://www.bkjia.com/PHPjc/486508.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/486508.htmlTechArticle一、編碼範圍 1. GBK (GB2312/GB18030) x00-xff GBK雙位元組編碼範圍 x20-x7f ASCII xa1-xff 中文 x80-xff 中文 2. UTF-8 (Unicode) u4e00-u9fa5 (中文) x3130-x318F (韓文)...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.