PHP编码转换函数应用

  最近写了几个小程序,其中遇到了很多字符编码的问题,在这里总结一下

  1、数据库中编码

  数据库的编码一般在创建数据库时设置“整理”,当然创建表时也需要设置的,而且只要有中文汉字、标点都需要设置的,一般有GBK(和GB2312一样,双字节编码,但比GB2312字符更多)、UTF-8(国际通用编码,三字节编码形式),我写程序都会使用UTF-8,也就是说在使用UTF-8处理字符时要使用3的倍数。

  数据库创建时“整理”的设置一般为“UTF-8 General”,在中间位置,有点不方便找。

  数据库中的字符编码转换一般有设置数据写入的字符编码

mysql_query("SET NAMES 'UTF8';",$conn);

  这里的 SET NAMES 'UTF8'是数据库设置编码写入的编码形式,通过这句,决定你的数据库中的编码为UTF-8,写入文件也为UTF-8编码(如果是GBK,这里要写成GBK)。

  2.字符串编码

  字符串的编码也是很常见的,比如做网页输出时,如果文本保存的编码(一般为Ascii和UTF-8)和字符串的编码不同时就会乱码,设置有时候涉及字符串的切割问题将不知取几的倍数。所以一般在编辑器中先设定编码为一个固定的,比如我装完编辑器最先做的就是更改字符编码为UTF-8,这样给以后的工作省去很多麻烦。

  做过采集的人都知道,有时候最需要做的就是正则表达式、字符编码转换。这样的坎我也走过,其实就是一个编码的问题,难倒了我好半天。也就是采集过来的是GBK编码的文档,我没转换直接用带有中文字符的正则表达式去匹配,无论怎么匹配都匹配不到,怎么看都是正确的啊,那个纠结啊~~

  这样的事屡见不鲜,其实只需要一个语句就够了

$sql = mb_convert_encoding($sql, "UTF-8", "GBK");//把GBK转换为UTF-8,千万别记混了

  看明白了吧,就是中文字符编码和英文编码不一致造成的。其实转换编码还有一种语句,我没怎么用过,不知道这两个那个更好,但我更喜欢用 mb_convert 类的命令,下文说说mb_convert 类的函数怎么好用。

gb2312转换成utf-8

$utf=iconv('GB2312', 'UTF-8', $_REQUEST['keyword']);

  两种任选一个。


  

posted @ 2012-11-26 18:30  小 伍  阅读(1756)  评论(0编辑  收藏  举报