php mysql 编码转换_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']);

两种任选一个。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值