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


    YBlog能接收引用通告,但是因为YBlog自己使用的是utf-8编码,如果对方的博客系统使用gb2312的编码的话,POST过来就会出现乱码(除非对方POST前先转换编码)。在不能保证对方是否一定使用utf-8编码的情况下,自己做一个编码的检查和转换是很有必要的。写了个函数来完成这个工作,原理很简单,因为gb2312/gbk是中文两字节,这两个字节是有取值范围的,而utf-8中汉字是三字节,同样每个字节也有取值范围。而英文不管在何种编码情况下,都是小于128,只占用一个字节(全角除外)。

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

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

    php代码
    1. //识别汉字编码,因为YBlog用的是utf-8,如果引用通告发过来的是gb2312的编码的话,需要可以识别并完成编码转换  
    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.         if((ord($string{$i})&192)==192)  
    26.         {  
    27.             //第一个字节判断通过  
    28.             $char = $string{++$i};  
    29.             if((ord($char)&128)==128)  
    30.             {  
    31.                 //第二个字节判断通过  
    32.                 $encoding = "GB2312";  
    33.                 break;  
    34.             }  
    35.         }  
    36.     }  
    37.       
    38.     if(strtoupper($encoding) == strtoupper($outEncoding))  
    39.         return $string;  
    40.     else 
    41.         return iconv($encoding,$outEncoding,$string);  
  • 相关阅读:
    百度贴吧营销实战之推广入口布局技巧
    微信加人限制2017版
    百度经验怎么赚钱之练就三星经验,轻松布局流量入口。
    百科词条 如何创建?客源何在?怎么赚钱?
    人物百科 从词条创建到最终盈利(简剖)
    百度文库营销技巧之文库不为人知的通过率 以及排名推广技巧
    百度知道一周练就5级账号(养号系列一)
    百度知道账号,快速升级必备36计(养号系列二)
    QQ运动,新楛的马桶还在香,营销人不应摒弃。
    裂变营销 流量分散年代 你那样的不可或缺
  • 原文地址:https://www.cnblogs.com/zhouwenwu/p/2415256.html
Copyright © 2020-2023  润新知