分享一例php代码,可用于判断文件的字符集,并作相应转码,还可以直接检测utf-8的BOM信息。有需要的朋友参考下。 php自定义函数,实现判断字符集并转码功能。原理分析:gb2312/gbk是中文两字节…,
分享一例php代码,可用于判断文件的字符集,并作相应转码,还可以直接检测utf-8的BOM信息。有需要的朋友参考下。
php自定义函数,实现判断字符集并转码功能。
原理分析:
gb2312/gbk是中文两字节,这两个字节是有取值范围的,而utf-8中汉字是三字节,同样每个字节也有取值范围。
英文环境下,不论在何种编码情况下,都是小于128,只占用一个字节(全角除外)。
如果是文件形式的编码检查,还可以直接check utf-8的BOM信息。
下面是这个函数的完整代码,用来对字符串编码进行检查和转码。
例子:
<?php function safeEncoding($string,$outEncoding ='UTF-8') { $encoding = "UTF-8"; for($i=0;$i<strlen($string);$i++) { if(ord($string{$i})<128) continue; if((ord($string{$i})&224)==224) { //第一个字节判断通过 $char = $string{++$i}; if((ord($char)&128)==128) { //第二个字节判断通过 $char = $string{++$i}; if((ord($char)&128)==128) { $encoding = "UTF-8"; break; } } } if((ord($string{$i})&192)==192) { //第一个字节判断通过 $char = $string{++$i}; if((ord($char)&128)==128) { // 第二个字节判断通过 $encoding = "GB2312"; break; } } } if(strtoupper($encoding) == strtoupper($outEncoding)) return $string; else return iconv($encoding,$outEncoding,$string); } ?>
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。