PHP判断字符集并转码的函数

简介:

原理很简单,因为gb2312/gbk是中文两字节,这两个字节是有取值范围的,而utf-8中汉字是三字节,同样每个字节也有取值范围。而英文不 管在何种编码情况下,都是小于128,只占用一个字节(全角除外)。

如果是文件形式的编码检查,还可以直接check utf-8的BOM信息。话不多说,直接上函数,这个函数是用来对字符串进行检查和转码的。

Java代码   收藏代码
  1. <?php  
  2. function safeEncoding($string,$outEncoding ='UTF-8')      
  3. {      
  4.     $encoding = "UTF-8";      
  5.     for($i=0;$i<strlen($string);$i++)      
  6.     {      
  7.         if(ord($string{$i})<128)      
  8.             continue;      
  9.           
  10.         if((ord($string{$i})&224)==224)      
  11.         {      
  12.             //第一个字节判断通过      
  13.             $char = $string{++$i};      
  14.             if((ord($char)&128)==128)      
  15.             {      
  16.                 //第二个字节判断通过      
  17.                 $char = $string{++$i};      
  18.                 if((ord($char)&128)==128)      
  19.                 {      
  20.                     $encoding = "UTF-8";      
  21.                     break;      
  22.                 }      
  23.             }      
  24.         }      
  25.       
  26.         if((ord($string{$i})&192)==192)      
  27.         {      
  28.             //第一个字节判断通过      
  29.             $char = $string{++$i};      
  30.             if((ord($char)&128)==128)      
  31.             {      
  32.                 // 第二个字节判断通过      
  33.                 $encoding = "GB2312";      
  34.                 break;      
  35.             }      
  36.         }      
  37.     }      
  38.                
  39.     if(strtoupper($encoding) == strtoupper($outEncoding))      
  40.         return $string;      
  41.     else     
  42.         return iconv($encoding,$outEncoding,$string);      
  43. }  
  44. ?>  

 

Java代码   收藏代码
  1. /** 
  2.  * 将未知编码的字符串转换为期望的编码(配置文件中设置的编码) 
  3.  * @param unknown $str 
  4.  * @param string $toEncoding 
  5.  * @return string 
  6.  */  
  7. function convertStr($str, $toEncode = 'utf-8') {  
  8.     $charsetlist = array('ascii''gbk''gb2312''utf-8''big5');  
  9.     $strCode = mb_detect_encoding($str, $charsetlist);  
  10.   
  11.     if (strtolower($strCode) != strtolower($toEncode)) {  
  12.         $str = iconv($strCode, $toEncode, $str);  
  13.     }  
  14.   
  15.     return $str;  
  16. }  
相关文章
|
4月前
|
Shell PHP Windows
PHP代码审计(四)PHP文件操作函数(2)
改变文件所有者。如果成功则返回 TRUE,如果失败则返回 FALSE。 语法:chown(file,owner)
37 0
|
4月前
|
安全 Unix Shell
PHP代码审计(四)PHP文件操作函数(1)
改变文件所有者。如果成功则返回 TRUE,如果失败则返回 FALSE。 语法:chown(file,owner)
38 0
|
4月前
|
小程序 PHP 数据安全/隐私保护
php图片加水印函数
这里分享下php给图片加水印的几个自定义函数 给图片加水印首先需要开启GD库。 用到的php函数是imagecopymerge () 和 imagecopy () imagecopymerge 函数可以支持两个图像叠加时,设置叠加的透明度
45 0
|
2月前
|
PHP
从建站到拿站 -- PHP判断循环及函数
从建站到拿站 -- PHP判断循环及函数
12 0
|
2月前
|
PHP
从PHP开始学渗透 -- 函数
从PHP开始学渗透 -- 函数
8 0
php案例:判断这个是繁体字还是简体字(满足绝大部分字符)用php函数
php案例:判断这个是繁体字还是简体字(满足绝大部分字符)用php函数
php案例:判断这个是繁体字还是简体字(满足绝大部分字符)用php函数
|
3月前
|
PHP 数据安全/隐私保护
|
4月前
|
小程序 Shell PHP
PHP代码审计(四)PHP文件操作函数(3)
改变文件所有者。如果成功则返回 TRUE,如果失败则返回 FALSE。 语法:chown(file,owner)
20 0
|
4月前
|
SQL 小程序 Shell
PHP代码审计(三)php中代码执行&&命令执行函数
string system(string command,int &return_var) 可以用来执行系统命令并直接将相应的执行结果输出 system() 输出并返回最后一行shell结果。
52 0
|
4月前
|
安全 小程序 PHP