五月 18, 2009
by 晓峰
1 Comment
php,mysql的utf-8乱码问题已经很久了,找了一大堆资料,却不能解决,其实并不是很难解决,只是方法就在眼前,而没能发现:
在分别在mysql,php,apache中配置相关参数后,执行如下操作:
1.mysql的配置文件,如”/etc/mysql/my.cnf”文件在[[mysql]]下添加:
default-character-set=utf8
2.php的配置文件,如”/etc/php5/apache2/php.ini”:
把;mssql.charset = “ISO-8859-1″该写成如下(去掉前面的“;”),
mssql.charset = "utf8"
3.apache的配置文件,如”/etc/apache2/conf.d/charset”添加如下:
AddDefaultCharset UTF-8
【注】在不同的系统以及不同版本的相关软件的配置会略有不同,但是并不会大相径庭:
接着,重启mysql,apache;
SHOW VARIABLES LIKE 'character_set%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
SHOW VARIABLES LIKE 'collation%';
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | utf8_general_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
如果还有乱码问题,则可以在查询代码之前加如下代码:
mysql_query('SET CHARACTER SET utf8');
mysql_query('SET NAMES utf8');
mysql_query('SET COLLATION_CONNECTION utf8');
mysql_query('SET COLLATION_DATABASE latin1');
例如:
# mysql_query('SET CHARACTER SET utf8');
mysql_query('SET NAMES utf8');
# mysql_query('SET COLLATION_CONNECTION utf8');
# mysql_query('SET COLLATION_DATABASE latin1');
$result = mysql_query("SELECT * FROM mtalk.talkdata");
ok,搞定,很久的问题终于搞定了,爽!
- 链接
- http://lists.mysql.com/../331