php

位置:IT落伍者 >> php >> 浏览文章

PHP自动识别字符集并完成转码详解


发布日期:2018年09月16日
 
PHP自动识别字符集并完成转码详解
话不多说直接上函数这个函数是用来对字符串进行检查和转码的需要的朋友可以过来参考下

因为自己使用字符编码一般的是utf编码但如果对方的博客使用gb编码的话POST过来就会出现乱码(除非对方POST前先转换编码)在不能保证对方是否一定使用utf编码的情况下自己做一个编码的检查和转换是很有必要的

写了个函数来完成这个工作原理很简单因为gb/gbk是中文两字节这两个字节是有取值范围的而utf中汉字是三字节同样每个字节也有取值范围而英文不管在何种编码情况下都是小于只占用一个字节(全角除外)

如果是文件形式的编码检查还可以直接check utf的BOM信息关于这方面的东西大家可以看看TP工具箱的编码转换功能我在那个AppCodingSwitch类中写了比较详细的注释

话不多说直接上函数这个函数是用来对字符串进行检查和转码的文件的检查与转码

复制代码 代码如下:
function safeEncoding($string $outEncoding = UTF) {
$encoding = "UTF";
for ($i = ; $i < strlen($string); $i++) {
if (ord($string{$i}) < )
continue;

if ((ord($string{$i}) & ) == ) {
//第一个字节判断通过
$char = $string{++$i};
if ((ord($char) & ) == ) {
//第二个字节判断通过
$char = $string{++$i};
if ((ord($char) & ) == ) {
$encoding = "UTF";
break;
}
}
}
if ((ord($string{$i}) & ) == ) {
//第一个字节判断通过
$char = $string{++$i};
if ((ord($char) & ) == ) {
//第二个字节判断通过
$encoding = "GB";
break;
}
}
}

if (strtoupper($encoding) == strtoupper($outEncoding))
return $string;
else
returniconv($encoding $outEncoding $string);
}

上一篇:php 去除html标记--strip

下一篇:学习PHP重定向的三种方法