`

PHP中GBK和UTF8编码处理

阅读更多

作者:heiyeluren  来源:heiyeluren的blog 2008-01-21 最后更新:2008-01-21 15:14:07

 

 

一、编码范围

1. GBK (GB2312/GB18030)
\x00-\xff  GBK双字节编码范围
\x20-\x7f  ASCII
\xa1-\xff  中文
\x80-\xff  中文

2. UTF-8 (Unicode)
\u4e00-\u9fa5 (中文)
\x3130-\x318F (韩文
\xAC00-\xD7A3 (韩文)
\u0800-\u4e00 (日文)
ps: 韩文是大于[\u9fa5]的字符


正则例子:
preg_replace("/([\x80-\xff])/","",$str);
preg_replace("/([u4e00-u9fa5])/","",$str);

 

二、代码例子

//判断内容里有没有中文-GBK (PHP)
function check_is_chinese ( $ s ) {
     return preg_match ( '/[\x80-\xff]./' , $ s ) ;
}

//获取字符串长度-GBK (PHP)
function gb_strlen ( $ str ) {
     $ count = 0 ;
     for ( $ i = 0 ; $ i < strlen ( $ str ) ; $ i + + ) {
         $ s = substr ( $ str , $ i , 1 ) ;
         if ( preg_match ( "/[\x80-\xff]/" , $ s ) ) + + $ i ;
         + + $ count ;
     }
     return $ count ;
}

//截取字符串字串-GBK (PHP)
function gb_substr ( $ str , $ len ) {
     $ count = 0 ;
     for ( $ i = 0 ; $ i < strlen ( $ str ) ; $ i + + ) {
         if ( $ count = = $ len ) break ;
         if ( preg_match ( "/[\x80-\xff]/" , substr ( $ str , $ i , 1 ) ) ) + + $ i ;
         + + $ count ;         
    
}

     return substr ( $ str , 0 , $ i ) ;
}

//统计字符串长度-UTF8 (PHP)
function utf8_strlen ( $ str ) {
     $ count = 0 ;
     for ( $ i = 0 ; $ i < strlen ( $ str ) ; $ i + + ) {
         $ value = ord ( $ str [ $ i ] ) ;
         if ( $ value > 127 ) {
             $ count + + ;
             if ( $ value > = 192 & & $ value < = 223 ) $ i + + ;
             elseif ( $ value > = 224 & & $ value < = 239 ) $ i = $ i + 2 ;
             elseif ( $ value > = 240 & & $ value < = 247 ) $ i = $ i + 3 ;
             else die ( 'Not a UTF-8 compatible string' ) ;
         }
         $ count + + ;
     }
     return $ count ;
}


//截取字符串-UTF8(PHP)
function utf8_substr ( $ str , $ position , $ length ) {
     $ start_position = strlen ( $ str ) ;
     $ start_byte = 0 ;
     $ end_position = strlen ( $ str ) ;
     $ count = 0 ;
     for ( $ i = 0 ; $ i < strlen ( $ str ) ; $ i + + ) {
         if ( $ count > = $ position & & $ start_position > $ i ) {
             $ start_position = $ i ;
             $ start_byte = $ count ;
         }
         if ( ( $ count - $ start_byte ) > = $ length ) {
             $ end_position = $ i ;
             break ;
         }     
        
$ value = ord
( $ str [ $ i ] ) ;
         if ( $ value > 127 ) {
             $ count + + ;
             if ( $ value > = 192 & & $ value < = 223 ) $ i + + ;
             elseif ( $ value > = 224 & & $ value < = 239 ) $ i = $ i + 2 ;
             elseif ( $ value > = 240 & & $ value < = 247 ) $ i = $ i + 3 ;
             else die ( 'Not a UTF-8 compatible string' ) ;
         }
         $ count + + ;

     }
     return ( substr ( $ str , $ start_position , $ end_position - $ start_position ) ) ;
}


//字符串长度统计-UTF8 [中文3个字节,俄文、韩文占2个字节,字母占1个字节] (Ruby)
def utf8_string_length ( str )
    temp = CGI : : unescape ( str )
    i = 0 ;
    j = 0 ;
    temp . length . times { | t |
         if temp [ t ] < 127
            i
+ =
1
        
elseif temp [ t ] > = 127 and temp [ t ] <
224
            j
+ =
1
            
if 0 = = ( j % 2 )

                i + = 2
                j
=
0
            
end

         else
            j + = 1
            
if 0 = = ( j % 3 )

                i + = 2
                j
=
0
            
end

         end
     }
     return i
}


//判断是否是有韩文-UTF-8 (JavaScript)
function checkKoreaChar ( str ) {
     for ( i = 0 ; i < str . length ; i + + ) {
         if ( ( ( str . charCodeAt ( i ) > 0x3130 & & str . charCodeAt ( i ) < 0x318F ) | | ( str . charCodeAt ( i ) > = 0xAC00 & & str . charCodeAt ( i ) < = 0xD7A3 ) ) ) {
             return true ;
         }
     }
     return false
分享到:
评论

相关推荐

    php 编码相互转换类(gbk转换utf8)

    标题中的"php 编码相互转换类(gbk转换utf8)"就是这样一个解决方案,它提供了一种更可靠的方式来将GBK编码的字符串转换为UTF-8编码。这个转换类通常包含一系列方法,用于处理各种编码转换的细节,如错误处理、异常...

    gbk_utf8编码转化工具

    描述中提到的“gbk2utf”,是一个用于将GBK编码的文件转换为UTF-8编码的工具。这个工具提供了两种版本:一个支持子目录的“gbk2utf”,可以递归地转换所有子目录下的文件;另一个是VBS(Visual Basic Script)编写的...

    GBK批量转utf8(支持整个目录)

    总的来说,GBK到UTF-8的转换是解决多语言环境中的编码兼容问题,对于处理中文文件尤其重要。通过批量转换工具,可以高效地完成大量文件的编码转换工作,保证数据的准确性和一致性。在日常开发和维护过程中,了解并...

    字符串处理类:将GBK,UTF8字符串转化为Unicode编码的php类库.zip

    这个压缩包提供的类库专门用于处理GBK和UTF8编码的字符串,并将其转换为Unicode编码,反之亦然。下面我们将深入探讨字符串编码转换的相关知识以及如何使用这个PHP类库。 Unicode是一种广泛使用的字符编码标准,它...

    文本文件编码转换工具 gbk utf8 gb2312

    写此贴为记录自己的学习历程,供后来者以观. ...网站里的学习源码文件(我用的是77例中的) 和很多插件 论坛代码... ...Discuz!也是的 解决起来很简单,把它们的编码都改成 utf8 好了. 批量文件转码工具

    基于PHP的UCenterHome简体GBK与utf8源码.zip

    在处理多语言编码时,GBK和UTF-8是常见的两种字符集,它们各有特点,适应不同的应用场景。本文将深入探讨基于PHP的UCenterHome在GBK和UTF-8编码下的源码实现。 首先,我们需要了解GBK和UTF-8的区别。GBK是GB2312的...

    DiscuzX3.4UTF8转GBK后乱码解决方案

    3. **手动转码**:资源中包含“手工UTF8转GBK文件”,这些可能是关键的模板文件或配置文件,已经被转换成GBK编码。将这些文件替换到论坛的相应目录,以匹配GBK编码的环境。 4. **IP数据文件转换**:资源中还提供了...

    基于PHP的UCenter Home 简体GBK与utf8.zip

    标题 "基于PHP的UCenter Home ...总的来说,这个压缩包提供了关于如何在PHP环境中解决UCenter Home的GBK和UTF-8编码问题的资源。理解和应用这些内容,开发者可以更好地处理跨编码环境的兼容性,保证网站的正常运行。

    不乱码批量修改mysql数据库、表、字段编码(gbk到utf8php脚本)

    批量修改mysql数据库、表、字段编码(gbk到utf8php脚本) 可以把整个数据库、表、字段编码全部从gbk_chinese_ci 到 utf8_general_ci 转换,不会乱码哦 狂拽吊炸天!!!

    php导出到Excel 或 CSV (附utf8、gbk 编码转换)

    本文将详细讲解如何使用PHP实现这个功能,同时处理常见的编码问题,如UTF-8和GBK的转换。 首先,让我们了解Excel和CSV文件格式。Excel是一种流行的电子表格应用程序,用于组织和分析数据。而CSV(Comma Separated ...

    好东西 mySQL数据库latin1-gbk,gbk-utf8,gbk-big5

    MySQL数据库在处理字符编码时,经常涉及到不同的字符集转换,如latin1到gbk,gbk到utf8,甚至gbk到big5等。这些转换在处理多语言数据或者迁移数据库时尤其重要,因为不同的字符集支持不同的字符范围,比如latin1主要...

    字符编码转换类,支持 ANSI、Unicode、Unicode big endian、UTF-8、UTF-8+Bom互相转换

    使用这样的类,你可以方便地处理各种编码的文本,特别是在处理来自不同来源的数据时,确保它们能够正确显示和处理。例如,如果你有一个使用GBK编码的文本文件,需要在网页上以UTF-8展示,可以使用这个类进行转换。 ...

    Patchwork UTF-8:处理UTF-8格式字符串的便携类库

    1. **字符串转换**:可以将字符串在不同的字符编码之间转换,例如从ISO-8859-1到UTF-8,或者从GBK到UTF-8,这对于处理来自不同来源的数据非常有用。 2. **字符检测**:能够检测字符串是否是有效的UTF-8编码,避免...

    php pdf 中文 utf8软件

    总的来说,这个压缩包提供了一个针对`fpdf`的扩展,使其能够正确处理和显示中文UTF-8和GBK编码的文本,对于需要在PHP项目中生成中文PDF的开发者来说是一个非常实用的资源。通过深入理解这些文件及其功能,可以有效地...

    PHP数组编码gbk与utf8互相转换的两种方法

    在PHP开发中,常见的字符编码有GBK和UTF-8,GBK是一种针对中文的编码方式,而UTF-8则支持世界上大多数语言。因此,掌握GBK与UTF-8之间的转换方法在实际应用中尤为重要。 文章介绍了两种PHP数组编码转换的方法。第一...

    GBK UTF转换工具

    总之,GBK和UTF转换工具是处理中文字符编码问题的重要工具,尤其在处理HTML、PHP、JSP等文件时,能有效确保文件内容在不同环境下的一致性。了解并掌握这种工具的使用,对于IT从业者来说,尤其是从事网页开发和数据...

    PHP实例开发源码—UCenter Home 简体GBK与utf8.zip

    在UCenter Home中,可能需要根据实际需求,将GBK编码的源码转换为UTF-8,或者反之,这通常涉及数据库的字符集设置、PHP代码中的字符串处理函数,以及HTML头部的字符集声明等。 5. 使用须知 "使用须知.txt"文件可能...

    php 读取或导出到Excel / CSV (附utf8、gbk 编码转换)

    在本文中,我们将探讨如何使用PHP来读取和导出数据到Excel(通常指xlsx格式,属于Microsoft Office Open XML标准)和CSV文件,并涉及编码转换,特别是UTF-8和GBK之间的转换。 首先,让我们关注PHP与Excel文件的交互...

    DZ模板 N5城市门户系列-V8 整站(GBK) 模板GBK UTF8.rar

    (简称DZ)论坛系统的一款专业模板,名为"N5城市门户系列-V8 整站(GBK)",并且包含了GBK和UTF8两种编码格式的版本。这款模板设计旨在打造一个功能全面、用户体验优秀的城市门户类网站,集资讯、社区互动于一体,适用...

    PHP编码转换函数utf-gb-big5

    在PHP编程语言中,处理不同字符编码的转换是常见的需求,特别是当涉及到中文字符时,如GBK(GB2312)、Big5和UTF-8等。这些编码标准在中国大陆和台湾地区尤为常见。本篇文章将详细介绍如何在PHP中进行各种编码间的...

Global site tag (gtag.js) - Google Analytics