[转]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 }
-------------我的签名档---------------------
年轻人,还需要多努力!
--------------------------------------------