[转]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 版本的 可以使用一下自定义函数去设置字符集

 

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 }

 

posted on 2011-06-30 14:11  DavidYanXW  阅读(711)  评论(0编辑  收藏  举报