`

PHP自动判断字符集并转码的详解

阅读更多
PHP自动判断字符集并转码的实例参考。

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

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

附,php自动判断字符集并转码的实例代码:
<?php
/**
* 自动判断字符集并转码
* edit: www.jbxue.com
*/
function safeEncoding($string,$outEncoding ='UTF-8')    
{    
 $encoding = "UTF-8";    
 for($i=0;$i<strlen($string);$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);    
}
?>

原文地址:http://www.jbxue.com/article/12650.html
5
1
分享到:
评论

相关推荐

    关于PHP自动判断字符集并转码的详解

    在这种情况下,自动判断字符集并进行转码就显得尤为重要。本文将详细解释这个过程的原理,并提供一个用于检测和转换字符串编码的PHP函数。 首先,让我们理解字符编码的基本概念。GBK和GB2312是中国常用的简体中文...

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

    本文将深入讲解如何使用PHP来自动识别字符集并完成转码,确保数据的正确显示和处理。 首先,我们需要理解不同字符编码的基本原理。UTF-8是最常用的多语言字符编码,它能够表示Unicode字符集中的所有字符。UTF-8的一...

    PHP版 汉字转码的实现详解

    由于中文字符集的复杂性,汉字转码在中文处理中尤为常见。 一、转码的基础知识 在计算机中,字符编码格式有很多种,比如常见的ASCII编码、Unicode编码以及各种针对不同语言的字符集编码(如GBK针对中文)。而...

    mysql乱码处理

    - 在`phpMyAdmin/config.inc.php`文件中,可以设置默认的字符集和转码引擎: ```php $cfg['DefaultCharset'] = 'utf-8'; $cfg['RecodingEngine'] = 'iconv'; ``` 2. **字符串处理库中的字符集设置**: - 修改...

    基于PHP的vod 视频点播系统源码for 5.3.x UTF-8.zip

    同时,源码使用UTF-8编码,这是一种广泛支持的多字节字符集,能处理世界上大多数语言,确保了系统在不同地区和语言环境下的兼容性。 三、VOD系统关键模块 1. **视频上传**:用户通过前端界面上传视频文件,后台PHP...

    php+flash编辑头像AvatarEditor

    需要注意的是,转码过程可能会涉及到字符集问题,需要确保所有相关文件和数据库配置一致,以免出现乱码。 5. **部署与使用**: 将整个压缩包解压后放在网站根目录下即可运行。如果部署在非根目录,需要修改程序中...

    基于PHP的vod Studio 视频点播系统for 5.3.x GBK.zip

    GBK编码是一种广泛用于简体中文的字符集,它包含了大部分中文字符,使得该VOD系统能够良好地处理中文内容,确保用户界面和视频元数据的正确显示。在开发过程中,开发者需要关注编码的统一和转换,避免乱码问题,确保...

    详解PHP导入导出CSV文件

    在上述过程中,如果CSV文件中的中文字符在导入时出现乱码问题,可以使用`iconv()`函数进行字符集转换,例如将`gb2312`转换为`utf-8`,以保证数据的正确显示。 文章中提到的示例代码展示了如何实现上述流程。一个...

    ajax+php中文乱码解决办法

    3. **后端处理编码**:PHP文件如果没有明确指定字符集,则可能默认使用服务器的字符集(如`ISO-8859-1`),这与前端的字符集不匹配。 #### 三、解决方案 针对上述问题,我们可以采取以下两种主要的解决方案: ###...

    美空商业版(GBK) 美空网dz3.2模板

    GBK编码是此模板所采用的一种字符集,它是中国大陆广泛使用的汉字编码标准,能够支持大量的中文字符,确保了网站内容的正常显示。 首先,我们要了解什么是Discuz! X3.2。Discuz! 是一款开源的PHP论坛软件,由康盛...

    PHPWind 7.5

    1. **GBK编码**:PHPWind 7.5 SP3 使用GBK编码,这是中国地区常用的多字节字符集,能够支持大量的汉字,对于中文用户来说是非常友好的。GBK编码是在GB2312基础上扩展的,包含了更多的汉字和符号,但在处理非中文字符...

    js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换&#XXX函数代码

    例如,GB2312-80、GBK、Big5等都是常用的汉字字符集,每个汉字通常使用2个字节表示,而每个字节的ASCII码范围在161-254之间(16进制A1-FE)。 #### JS中的字符转换 JavaScript提供了多种方法来实现字符编码的转换...

Global site tag (gtag.js) - Google Analytics