决PHP存取MySQL 4.1乱码问题

2016-02-19 19:22 3 1 收藏

今天图老师小编要跟大家分享决PHP存取MySQL 4.1乱码问题,精心挑选的过程简单易学,喜欢的朋友一起来学习吧!

【 tulaoshi.com - 编程语言 】

从MySQL 4.1开始引入的多语言支持确实很棒,而且一些特性已经超过了其他的数据库系统。不过我在测试过程中发现使用适用于MySQL 4.1之前的PHP语句操作MySQL数据库会造成乱码,即使是设置过了表字符集也是如此。

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_%';

+----------------------+-------------------+

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

| Variable_name | Value |

+----------------------+-------------------+

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

| collation_connection | latin1_swedish_ci |

| collation_database | latin1_swedish_ci |

| collation_server | latin1_swedish_ci |

+----------------------+-------------------+

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

3 rows in set (0.00 sec)

上面列出的值就是系统的默认值。(很奇怪系统怎么默认是latin1的瑞典语排序方式)...

当我们按照原来的方式通过PHP存取MySQL数据库时,就算设置了表的默认字符集为utf8并且通过UTF-8编码发送查询,你会发现存入数据库的仍然是乱码。问题就出在这个connection连接层上。解决方法是在发送查询前执行一下下面这句:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

SET NAMES 'utf8';

它相当于下面的三句指令:

SET character_set_client = utf8;

SET character_set_results = utf8;

SET character_set_connection = utf8;

再试试看,就正常了。

来源:http://www.tulaoshi.com/n/20160219/1620824.html

延伸阅读
*MySQL(和PHP搭配之最佳组合)中文乱码的原因 MySQL(和PHP搭配之最佳组合)会出现中文乱码的原因不外乎下列几点: -MySQL(和PHP搭配之最佳组合) server本身设定问题,例如还停留在latin1 -MySQL(和PHP搭配之最佳组合) table的语系设定问题(包含character与collation) -客户端程式(例如php)的连线语系设定问题 ...
标签: Web开发
当参数值为英文是可以正确写入数据库,但为中文是就不行,如何解决这个中文乱码的问题呢? 下面一步步教你如果解决php与ajax开发过程中,提交中文参数乱码的问题。 出现的原因是因为参数传递的格式问题. 因为英文在参数传递转换两边格式一样所以没问题. 而中文状态下的解析会出现构造组合问题.出现类似繁体的乱玛. 可以这样解决: ...
    问:怎样解决MySQL 5.0.16的乱码问题? 答:MySQL 5.0.16的乱码问题可以用下面的方法解决: 1.设置phpMyAdmin Language:Chinese simplified (zh-utf-8) MySQL 字符集:UTF-8 Unicode (utf8) MySQL 连接校对 gbk_chinese_ci 2.创建数据库时 整理设置成 gbk_chinese_ci 3.用S...
mysql 4.1增加了编码的支持,所以在转换旧数据的时候稍微麻烦一些,但只要注意以下几点,基本没问题的: 1、转换之前一定要先把原有数据dump出来,一般原有数据都是gb2312编码吧,dump命令如下: mysqldump -u -p database –add-drop-table –extended-insert –add-drop-table是为了导入的时候省去建表环节,–extended-...
1. MySQL 用户名和口令 * MySQL使用于认证目的的用户名,与Unix用户名(登录名字)或Windows用户名无关。缺省地,大多数MySQL客户尝试使用当前Unix用户名作为MySQL用户名登录,但是这仅仅为了方便,客户程序允许用-u或--user选项指定一个不同的名字。及与安全的考虑,所有的MySQL用户名都应该有口令。 * MySQL用户名最长可以是16各...

经验教程

451

收藏

49
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部