解决PHP存取MySQL 4.1乱码问题
来源:互联网 发布:单片机无线通信模块 编辑:程序博客网 时间:2024/05/08 04:00
从MySQL 4.1开始引入的多语言支持确实很棒,而且一些特性已经超过了其他的数据库系统。不过我在测试过程
中发现使用适用于MySQL 4.1之前的PHP语句操作MySQL数据库会造成乱码,即使是设置过了表字符集也是如此。
我读了一下新的MySQL在线手册中第十章"Character Set Support"后终于找到了解决方法并测试通过。
MySQL 4.1的字符集支持(Character Set Support)有两个方面:字符集(Character
set)和排序方式(Collation)。对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据
表(table)和连接(connection)。
查看系统的字符集和排序方式的设定可以通过下面的两条命令:
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 (0.00 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 (0.00 sec)
上面列出的值就是系统的默认值。(很奇怪系统怎么默认是latin1的瑞典语排序方式)...
当我们按照原来的方式通过PHP存取MySQL数据库时,就算设置了表的默认字符集为utf8并且通过UTF-8编码发送
查询,你会发现存入数据库的仍然是乱码。问题就出在这个connection连接层上。解决方法是在发送查询前执
行一下下面这句:
SET NAMES 'utf8';
它相当于下面的三句指令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
再试试看,正常了吧?^_^ Enjoy! (完)
btw, 如果读取了数据库的中文数据后,在页面显示乱码,可以采用下面这句。
mysql_query("set names 'gb2312'");
中发现使用适用于MySQL 4.1之前的PHP语句操作MySQL数据库会造成乱码,即使是设置过了表字符集也是如此。
我读了一下新的MySQL在线手册中第十章"Character Set Support"后终于找到了解决方法并测试通过。
MySQL 4.1的字符集支持(Character Set Support)有两个方面:字符集(Character
set)和排序方式(Collation)。对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据
表(table)和连接(connection)。
查看系统的字符集和排序方式的设定可以通过下面的两条命令:
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 (0.00 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 (0.00 sec)
上面列出的值就是系统的默认值。(很奇怪系统怎么默认是latin1的瑞典语排序方式)...
当我们按照原来的方式通过PHP存取MySQL数据库时,就算设置了表的默认字符集为utf8并且通过UTF-8编码发送
查询,你会发现存入数据库的仍然是乱码。问题就出在这个connection连接层上。解决方法是在发送查询前执
行一下下面这句:
SET NAMES 'utf8';
它相当于下面的三句指令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
再试试看,正常了吧?^_^ Enjoy! (完)
btw, 如果读取了数据库的中文数据后,在页面显示乱码,可以采用下面这句。
mysql_query("set names 'gb2312'");
- 解决PHP存取MySQL 4.1乱码问题
- 解决PHP存取MySQL 4.1乱码问题
- 解决PHP存取MySQL 4.1乱码问题
- 解决通过PHP存取MySQL数据库现实乱码的问题
- php+mysql解决乱码问题
- 解决mysql存取utf8乱码
- mysql中存取数据解决乱码问题(idea)
- 解决MySQL中文乱码问题|PHP+MySQL
- PHP mysql乱码问题的解决
- 解决PHP和MYSQL中文乱码问题
- 解决php写入mysql乱码问题汇总
- PHP存取 Mysql 数据乱码终极解决方案
- 解决cookie存取中文乱码问题
- php&mysql乱码解决
- MySQL+PHP乱码解决
- php+mysql乱码解决
- [PHP]解决PHP和MySQL的中文乱码问题
- PHP解决乱码问题
- ajax的代码
- IIS6架设网站常见问题及症状举例答疑
- 常用快捷键 vs2005 + sqlserver2005
- copy class in flex(深度拷贝)
- 在debian下整合apache1.3和resin2
- 解决PHP存取MySQL 4.1乱码问题
- 马云的18罗汉与史玉柱的4个火枪手
- vs.net2003中DataGrid执行Command命令有时不能被执行的问题
- Life In Bill Gate's Eyes
- 了解 Java SE 6 新特性系列
- 树treeview的好文章和源代码
- Oracle对象类型详解
- VS2005 快捷键
- IT行业精英肝胆多病 超7成从业者健康有问题