[转]php中设置 mysql 字符集的问题

转载自: http://hi.baidu.com/wfly126/blog/item/9d6e0e010d093cdf277fb59b.html

如果大家在进行php 5 .2.3 以上的开发时,请尽量避免使用mysql_query(”set names utf8″) 来设置mysql的字符集了。
mysql_set_charset()才是最完整的字符集设置方式。
后者比前者多一个设置,
就是把struct MySQL的charset成员也设置了。
这个成员变量在escape的时候起着很重要的作用,特别是对于GBK这种运行把“\”作为字符一部分的编码格式。
如果你只使用mysql_query(”set names XXX”),那么在某些字符集,会有重大的安全漏洞,导致mysql_real_escape_string变得和addslashes一样不安全。

如果是 <5.2.3 版本的 可以使用一下自定义函数去设置字符集

 

ContractedBlock.gif ExpandedBlockStart.gif PHP Code
 
   
1 <? php
2   function imysql_set_charset( $charset , $links = null ){
3 if ( false === function_exists ( ' mysql_set_charset ' )){
4 if ( $links == null ){
5 return @ mysql_query ( ' SET CHARACTER " ' . $charset . ' " ' );
6 } else {
7 return @ mysql_query ( ' SET CHARACTER " ' . $charset . ' " ' , $links );
8 }
9 } else {
10 if ( $links == null ){
11 return @mysql_set_charset( $charset );
12 } else {
13 return @mysql_set_charset( $charset , $links );
14 }
15 }
16 }

 

转载于:https://www.cnblogs.com/DavidYan/articles/2094423.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值