文档介绍:mysql 中文乱码解决方法集锦第一个方法: MySQL 中文乱码的问题最近要将 MySQL 升级到 MySQL ,发现了中文乱码的问题, 希望以下见解对大家有用。 1. MySQL 在文字上有很大改进,它有了 Character Set 与 Collation 的慨念。 MySQL ,一般的程式都会将文字以拉丁文( latin) 来储存, 就算我们输入中文字, 结果仍是放在以拉丁文设置的文字栏里头, 这对 MySQL 与以 MySQL 为基楚的程式来说, 并不会有问题。 3. 可是 MySQL 的系统编码是预设用 UTF-8 的,当要 restore MySQL 的 backup 档到 MySQL 时,乱码就出现了。原因在于 MySQL 将 latin 码转换过来,而后转换是并不完全完美的, 这导致了出现少量文字出现乱码现象。解决 PHP 存取 MySQL 乱码问题 QUOTE: 从 MySQL 开始引入的多语言支持确实很棒, 而且一些特性已经超过了其他的数据库系统。不过我在测试过程中发现使用适用于 MySQL 之前的 PHP 语句操作 MySQL 数据库会造成乱码, 即使是设置过了表字符集也是如此。我读了一下新的 MySQL 在线手册中第十章"Character Set Support" 后终于找到了解决方法并测试通过。 MySQL 的字符集支持(Character Set Support) 有两个方面:字符集(Character set) 和排序方式(Collation) 。对于字符集的支持细化到四个层次: 服务器(server) , 数据库(database) , 数据表(table) 和连接(connection) 。查看系统的字符集和排序方式的设定可以通过下面的两条命令: CODE: mysql> SHOW VARIABLES LIKE 'character_set_%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 7 rows in set ( sec) mysql> SHOW VARIABLES LIKE 'collation_%'; +----------------------+-------------------+ | Variable_name | Value | +----------------------+-------------------+ | collation_connection | latin1_swedish_ci | | collation_database | latin1_swedish_ci | | collation_server | latin1_swedish_ci | +----------------------+-------------------+ 3 rows in set ( sec) 上面列出的值就是系统的默认值。如果你奇怪系统怎么默认是 latin 1 的瑞典语排序方式, 原因是 MySQL 由瑞典的 公司( 目前公司名称为 MySQL AB) 开发,不用再多说了吧。当我们按照原来的方式通过 PHP 存取 MySQL 数据库时, 就算设置了表的默认字符集为 utf8 并且通过 UTF-8 编码发送查询,你会发现存入数据库的仍然是乱码。问题就出在这个 connection 连接层上。解决方法是在发送查询前执行一下下面这句: SET NAMES 'utf8'; 它相当于下面的三句指令: CODE: SET c