解决PHP存取MySQL 4.1乱码问题

转载 2007年10月16日 01:13:00
原贴:http://mlsx.xplore.cn/read.php/4.htm

解决PHP存取MySQL 4.1乱码问题   

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

我 使用phpmyadmin来操作mysql,使用了zh- cn-utf8的连接方式,数据库和表也使用了utf8的编码,在phpmyadmin里数据都很正常,但是使用php连接并打印出来以后成为??,既不 是utf8,也不是gb2312,更不是iso8859,如果从我的表单插入数据,则显示乱码,有些是中文,有些是乱码。查看了一下mysql 4.1手册中有关字符集的问题,问题解决,总结如下:

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!
 

解决PHP写入、读取MYSQL数据库数据中文乱码问题

使用PHP和MYSQL开发过程中经常会遇到PHP写入或读取MYSQL数据库中数据,出现中文乱码的问题,英文和数字不会出现乱码。这个问题非常让人头痛,因为导致这个问题的原因比较多,比如网页和数据库编码不...
  • u012767263
  • u012767263
  • 2014年02月11日 15:51
  • 1926

PHP写入数据库中文乱码问题

对于乱码这个问题php开发者几乎都会有碰到过,我们下面主要是介绍了php文件乱码和页面乱码以及php mysql数据库连接时乱码解决方法...
  • yuanhengzhw
  • yuanhengzhw
  • 2016年06月10日 10:31
  • 6939

linux mysql 中文乱码问题解决方法

linux mysql 解决中文乱码问题
  • qq_26071477
  • qq_26071477
  • 2016年10月30日 00:32
  • 2947

关于Mysql、Php、phpMyAdmin、Zend 乱码的问题?

  • 2014年08月18日 11:09
  • 86KB
  • 下载

Ubuntu下MySQL5.7+PHP7.0+Okhttp3.7.0中文乱码问题解决方案

在安卓手机app做登陆和注册功能时,如果传输中文,经常会遇到乱码的问题。这也是个很头疼的问题。首先,从前端将数据post出去,假设是用Okhttp进行,传至后端的php程序,然后连接上服务器中的mys...
  • lyandgh
  • lyandgh
  • 2018年01月10日 20:12
  • 44

如何解决Php(adodb)输出Mysql中数据乱码问题!

转载http://hi.baidu.com/yueti/item/6d389c3adb95350ecfb9fe27 网页乱码问题对于我这样的新手总是很闹心!       经过一段时间的锻炼,我也简...
  • hhao123456
  • hhao123456
  • 2013年01月25日 15:25
  • 406

php读mysql中文乱码问题解决方法

涉及到的编码一般来说,乱码的出现有2种原因,首先是由于编码(charset)设置错误,导致浏览器以错误的编码来解析,从而出现了满屏乱七八糟的“天书”,其次是文件被以错误的编码打开,然后保存,比如一个文...
  • xjc200808
  • xjc200808
  • 2016年01月05日 12:29
  • 374

PHP+MYSQL乱码问题解决方法三步走

PHP+MYSQL乱码问题解决方法,分三步: 第一步:设置页面编码 (1)PHP文件头:header ( "Content-type:text/html; charset=utf-8" ); (...
  • dengwei4378
  • dengwei4378
  • 2011年12月27日 16:04
  • 422

常见php与mysql中文乱码问题解决办法

乱码问题1: 用PHPmyAdmin操作MySQL数据库汉字显示正常,但用PHP网页显示MySQL数据时所有汉字都变成了?号。 症状: 用PHPmyAdmin输入汉字正常,但当PHP网页显示MySQL...
  • lxhjh
  • lxhjh
  • 2016年08月04日 10:12
  • 956

前端网页、php与mysql数据库字符编码(解决中文等乱码问题)

编码方式
  • ufan94
  • ufan94
  • 2017年11月24日 09:05
  • 77
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解决PHP存取MySQL 4.1乱码问题
举报原因:
原因补充:

(最多只允许输入30个字)