MySQL 4.1的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式(Collation)。对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。当我们按照原来的方式通过PHP存取MySQL数据库时,就算设置了表的默认字符集为utf8并且通过UTF-8编码发送查询,你会发现存入数据库的仍然是乱码。
其实简单的方法是通过phpMyAdmin来设置。
设置下面几项:
1: 语言设置为 chinese (zh-utf-8)
2: MySQL 字符集: UTF-8 Unicode (utf8)
3: MySQL 连接校对: utf8_general_ci
4: 新增数据库和数据表的时候,整理项选择 utf8_general_ci
通过以上设置,在phpMyAdmin中操作和查询的时候,中文字符都不会乱码了。
但是你会发现,在php程序中用以前的sql语句查询出来的结果还是乱码,问题就出在connection连接层上。
解决方法是在成功连接数据库之后,发送一句查询语句:
1: $this->LinkID = @mysql_connect($this->Host, $this->User, $this->Password);
2: @mysql_query('SET NAMES 'utf8'', $this->LinkID);
其实简单的方法是通过phpMyAdmin来设置。
设置下面几项:
1: 语言设置为 chinese (zh-utf-8)
2: MySQL 字符集: UTF-8 Unicode (utf8)
3: MySQL 连接校对: utf8_general_ci
4: 新增数据库和数据表的时候,整理项选择 utf8_general_ci
通过以上设置,在phpMyAdmin中操作和查询的时候,中文字符都不会乱码了。
但是你会发现,在php程序中用以前的sql语句查询出来的结果还是乱码,问题就出在connection连接层上。
解决方法是在成功连接数据库之后,发送一句查询语句:
1: $this->LinkID = @mysql_connect($this->Host, $this->User, $this->Password);
2: @mysql_query('SET NAMES 'utf8'', $this->LinkID);
解决方案 »
- 相当奇怪,php_uploadprogress.dll 找不到指定的程序
- ajax预加载页面的问题。
- curl为什么只产生一行cookie
- PHP又有重大漏洞 多语言拒绝服务漏洞事件预警
- windows 2008服务器下PHP环境配置,PHP版本选择
- Parse error: syntax error, unexpected T_VARIABLE in
- 请问如何在外部访问函数内部静态变量?急
- post简单问题 --------------------------------------------------------
- 怎么获得程序所在的当前文件夹的名称!
- 作了个上传文件的简单脚本 可是老师不能正确显示文件名~~~
- PHP中有没有想水晶报表一样的功能呢
- 请问出现这样的错误是什么回事?
我以前帖子里详细讲过,找一下就可以。