php+检测字符集,php测试代码_php 检测字符编码代码

摘要 腾兴网为您分享:php 检测字符编码代码,掌上电力,云南移动,悦作业,银行帮等软件知识,以及秒赚钥匙,hedit,飞秋2015,电竞大师,我的世界浩方电竞平台,佳能ts9020驱动,哈佛商业评论,小米小说,x903,csdn,差旅报销单模板,医保自查报告范文,dm123,电脑短视频,拍拍网今日特价等软件it资讯,欢迎关注腾兴网。blockquote function utf8_gb2312($str, $default = 'gb2312') { $str = preg_replace(/[x01-x7f] /, , $str); if (empty($str)) return $default; $preg = array( gb2312 = /^([xa1-xf7][xa0-xfe]) $/, //正则判断是否是gb2312 utf-8 = /^[x{4e00}-x{...

function utf8_gb2312($str, $default = 'gb2312')

{

$str = preg_replace("/[x01-x7f] /", "", $str);

if (empty($str)) return $default;

$preg =  array(

"gb2312" => "/^([xa1-xf7][xa0-xfe]) $/", //正则判断是否是gb2312

"utf-8" => "/^[x{4e00}-x{9fa5}] $/u",      //正则判断是否是汉字(utf8编码的条件了),这个范围实际上已经包含了繁体中文字了

);

if ($default == 'gb2312') {

$option = 'utf-8';

} else {

$option = 'gb2312';

}

if (!preg_match($preg[$default], $str)) {

return $option;

}

$str = @iconv($default, $option, $str);

//不能转成 $option, 说明原来的不是 $default

if (empty($str)) {

return $option;

}

默认编码是gb2312,而且我统计了一下,90%的情况下都是gb2312,所以,我的检测函数不能出现本来是gb2312的,结果被检测出utf8. 基本思路是:

1. 把所有的ascii去掉,如果全部都是ascii,那么就是gb2312。

2. 假设这个字符串是gb2312,用一个正则检查它是否是真的gb2312,如果不是,那么就是utf-8

3. 然后,用iconv 把字符串转换成utf8,如果转换不成功,那么原来可能不是真正的一个gb2312编码的字符

(用正则匹配我已经尽量精确,但是,gb2312的编码不是连续的,还是会有空洞),那么最后的编码就是utf-8.

4. 否则就是gb2312 编码

加入这样的检查功能后,在1000个关键字里面,就出现了1个乱码,比以前的近100个关键字乱码少了很多。

相关推荐

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值