决PHP存取MySQL 4.1乱码问题

2016-02-19 19:22 0 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)

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

mysql SHOW VARIABLES LIKE 'collation_%';

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

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

| Variable_name | Value |

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

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

| collation_connection | latin1_swedish_ci |

| collation_database | latin1_swedish_ci |

| collation_server | latin1_swedish_ci |

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

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

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;

再试试看,就正常了。

来源:https://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...
最近学习JSP,使用了MYSQL数据库。可是乱码问题一直困扰着我。 自己以为只要从页面到数据库都使用一种编码(比如UTF-8)应该就不会产生乱码了。结果我的中文果然不是纯乱码了,而变成中文数字+英文乱码的形式。 解决过程很艰辛,走了不少弯路。最后发现最根本的原因出在EMS2007身上,他本身对中文支持的不好!直接用EMS2007添加...
1. MySQL 用户名和口令 * MySQL使用于认证目的的用户名,与Unix用户名(登录名字)或Windows用户名无关。缺省地,大多数MySQL客户尝试使用当前Unix用户名作为MySQL用户名登录,但是这仅仅为了方便,客户程序允许用-u或--user选项指定一个不同的名字。及与安全的考虑,所有的MySQL用户名都应该有口令。 * MySQL用户名最长可以是16各...

经验教程

220

收藏

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