整理一下昨天問大家關於PHP如何判斷是否為utf8編碼文件的方法,以下資料是用
google搜尋到的。
位置: http://ibtaiwan.com/ipb/index.php?showtopic=4035
由於utf8編碼有固定格式,其可能有2~4個字節,我們可以將每一個字節拆開判斷
這個函示僅判斷每個中文字的第一個字節,應該夠了。
請大家看看有沒有問題!
底下是UTF8每個中文字字節的範圍
google搜尋到的。
位置: http://ibtaiwan.com/ipb/index.php?showtopic=4035
由於utf8編碼有固定格式,其可能有2~4個字節,我們可以將每一個字節拆開判斷
這個函示僅判斷每個中文字的第一個字節,應該夠了。
請大家看看有沒有問題!
//判斷字串是否為utf8 function is_utf8($str) { $i=0; $len = strlen($str); for($i=0;$i<$len;$i++) { $sbit = ord(substr($str,$i,1)); if($sbit < 128) { //本字節為英文字符,不與理會 }elseif($sbit > 191 && $sbit < 224) { //第一字節為落於192~223的utf8的中文字(表示該中文為由2個字節所組成utf8中文字),找下一個中文字 $i++; }elseif($sbit > 223 && $sbit < 240) { //第一字節為落於223~239的utf8的中文字(表示該中文為由3個字節所組成的utf8中文字),找下一個中文字 $i+=2; }elseif($sbit > 239 && $sbit < 248) { //第一字節為落於240~247的utf8的中文字(表示該中文為由4個字節所組成的utf8中文字),找下一個中文字 $i+=3; }else{ //第一字節為非的utf8的中文字 return 0; } } //檢查完整個字串都沒問體,代表這個字串是utf8中文字 return 1; } |
底下是UTF8每個中文字字節的範圍
Unicode 1st Byte 2nd Byte 3rd Byte 4th Byte ------------------------------------------------------------------------------- U+0000..007F 00..7F U+0080..07FF C2..DF 80..BF U+0800..0FFF E0 A0..BF 80..BF U+1000..CFFF E1..EC 80..BF 80..BF U+D000..D7FF ED 80..9F 80..BF U+E000..FFFF EE..EF 80..BF 80..BF U+10000..3FFFF F0 90..BF 80..BF 80..BF U+40000..FFFFF F1..F3 80..BF 80..BF 80..BF U+100000..10FFFF F4 80..8F 80..BF 80..BF |
全站熱搜
留言列表