PHP自动判断字符集并转码的方法
来源:互联网 发布:关于投资知乎 编辑:程序博客网 时间:2024/06/07 15:48
原理:
因为gb2312/gbk是中文两字节,这两个字节是有取值范围的,而utf-8中汉字是三字节,同样每个字节也有取值范围。而英文不 管在何种编码情况下,都是小于128,只占用一个字节(全角除外)。
如果是文件形式的编码检查,还可以直接check utf-8的BOM信息。话不多说,直接上函数,这个函数是用来对字符串进行检查和转码的。
附,php自动判断字符集并转码的实例代码:
/**
* 自动判断字符集并转码
* edit: www.jbxue.com
*/
function safeEncoding($string,$outEncoding ='UTF-8')
{
$encoding = "UTF-8";
for($i=0;$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);
}
?>
因为gb2312/gbk是中文两字节,这两个字节是有取值范围的,而utf-8中汉字是三字节,同样每个字节也有取值范围。而英文不 管在何种编码情况下,都是小于128,只占用一个字节(全角除外)。
如果是文件形式的编码检查,还可以直接check utf-8的BOM信息。话不多说,直接上函数,这个函数是用来对字符串进行检查和转码的。
附,php自动判断字符集并转码的实例代码:
/**
* 自动判断字符集并转码
* edit: www.jbxue.com
*/
function safeEncoding($string,$outEncoding ='UTF-8')
{
$encoding = "UTF-8";
for($i=0;$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);
}
?>
0 0
- PHP自动判断字符集并转码的方法
- PHP自动判断字符集并转码
- PHP自动判断字符集并转码的实例参考
- PHP判断字符集并转码的函数
- PHP自动识别字符集并完成转码的实例分享
- PHP自动识别字符集并完成转码
- php:PHP自动识别字符集并完成转码
- 【资料】自动判断文本流的字符集
- PHP判断字符串编码是否utf8并转换的方法
- PHP判断字符串编码是否utf8并转换的方法
- PHP判断字符串编码是否utf8并转换的方法
- Windows Notepad 判断字符集的方法
- php采集页面并自动转码
- PHP 设置MySQL连接字符集的方法
- C#获取网页源码,自动判断网页字符集编码[转]
- 彻底解决android读取中文txt的乱码(自动判断文档类型并转码
- 彻底解决android读取中文txt,lrc的乱码(自动判断文档类型并转码)
- 彻底解决android读取中文txt,lrc的乱码(自动判断文档类型并转码)
- 理解RESTful架构
- 关于驱动弹出数字签名不受信任的问题
- Gray码的生成算法(直接由二进制数转格雷码)
- MFC对话框应用程序 如何在对话框窗口显示前获取窗口(控件)的屏幕坐标位置
- OCP-V13-703
- PHP自动判断字符集并转码的方法
- C#执行异步操作的几种方式总结比较
- 快速排序及快速选择终极版
- 转化为json字符串
- 安装laravel 的两种方式
- 关于 IT 系统可用性的一个粗略模型
- android权限大全
- TCP/IP 协议栈及 OSI 参考模型详解
- Junit多线程测试