转自-----http://bbs.unixtech.cn/read.php?tid=421
mysql4.1开始引入多语言支持,因此数据库移植或者从php存取数据,用phpmyadmin管理时都可能会出现中文乱码问题。要想解决问题,我们首先要弄明白mysql字符集的问题。
mysql4.1及其之后的版本,对字符集的支持分为四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection):
character_set_server:这是设置服务器使用的字符集
character_set_client :这是设置客户端发送查询使用的字符集
character_set_connection :这是设置服务器需要将收到的查询串转换成的字符集
character_set_results :这是设置服务器要将结果数据转换到的字符集,转换后才发送给客户端
整个过程:
- client(如php程序)发送一个查询;
- 服务器收到查询,将查询串从character_set_client 转换到character_set_connection,然后执行转换后的查询;
- 服务器将结果数据转换到character_set_results字符集后发送回客户端。
你可以用下边两条命令查看一下系统的字符集和排序方式设定:
mysql> SHOW VARIABLES LIKE ‘character_set_%’;
mysql> SHOW VARIABLES LIKE ‘collation_%’;
mysql 默认用的字符集是latin1,连接校对用的latin1-_swedish_ci。看到这儿你应试有点明白了,我们通过php发送的查询一般是utf8或者GBK,GB2312,而它默认的是latin1,所以用phpmyadmin查看或者直接进数据库里查看数据,都是一些乱码。(存取出来放在网页上大多是正常的。)phpmyadmin在对mysql4.0以下会使用内置的库来实现字符集的转换,从而支持多语言版本,而对于4.1以上则完全交给Mysql。所以以上几个层次的转换如果有字符集不匹配的情况,出现乱码就很容易理解了。说了半天,其实你只要把上述变量设置一致了,不管是直接在数据库里查看,还是在phpmyadmin里查看都不会出现中文乱码了。
假如你的系统和php网页是utf8编码,你可以将mysql的编码由默认的latin1改为utf8.
编辑mysql的配置文件,/etc/my.cnf,在[mysqld]中设置default-character-set=utf8即可。不过原来的数据,假如你用4.0,mysqldump出来的数据是latin1的编码,你再导入就会出现乱码。如果你原来的数据非常宝贵,那你还是用latin1编码吧。这样虽然从phpmyadmin或者数据库里看到的是乱码,但php存取出来中文是正确的。
分享到:
相关推荐
设定mysql字符集解决终端乱码设定mysql字符集解决终端乱码
查看mysql字符集MySQL 乱码的根源是的 MySQL 字符
设置mysql字符集 mysql 乱码
MYSQL字符集乱码的解决 在命令行下,以及从网页取出来就不会出现乱码
解决字符集通讯设置不匹配的方法: (修改默认的character_set_client,character_set_connection,character_set_result)
docker mysql 字符集设置 使用 docker 启动 mysql 容器可能会出现中文乱码的情况,这里记录如何制作支持中文的 mysql 镜像 docker版本:18.06 mysql 版本:5.7 1. 创建 my.cnf 文件 [client] default-character-set=...
详细介绍了字符编码的渊源,解释了MySQL中字符编码
精通MySQL字符集与校对集,再也不会为乱码而心烦意乱了
7_MYSQL视频教程 字符集操作原理与乱码解决方案character_set_client_character_set_connection_character_set_results
Mysql数据库乱码 问题彻底解决 针对JAVA
所以一般情况下只需要设置character-set-server,而在创建数据库和表时不特别指定字符集,这样统一采用character-set-server字符集。 character-set-client:客户端的字符集。客户端默认字符集。当客户端向服务器...
MySQL数据库乱码-Linux下乱码问题一 乱码问题是很让人抓狂的问题,下面我将记录一下linux下mysql乱码问题的解决...mysql默认字符集是latin1,但是我们大部分程序使用的字符集是utf8,我们就需要修改mysql的字符集了。
详细的介绍了mysql数据库字符集的设置,有效的避免了乱码的发生
打开mysql改变字符集 然后在获取连接时候改变字符集 最后在查询之前改变字符集 我用过的可以解决
前言 有的时候我们在查看数据库数据时,会看到...mysql数据库可以通过设定字符集,来使用对应的字符集和检验规则来组织字符。就像是解读一片文章的时候用那种语言来解析。例如:中国人常使用的utf8编码,代表的是中文。
MySQL字符编码及乱码解决方案 · 使用多种字符集来存储字符串 · 使用多种校对规则来比较字符串 · 在同一台服务器, 同一个数据库或甚至在同一个表中使用不同字符集或校对规则来混合字符串 · 允许定义任何级别...
MySQL中涉及的几个字符集 character-set-server/default-character-set:服务器字符集,默认情况下所采用的。 character-set-database:数据库字符集。 character-set-table:数据库表字符集。 优先级依次增加。所以...
mysql示例数据库(world)_解决中文乱码_使用UTF8字符集
计算机后端-PHP视频教程. php与mysql加强- 08. php加强41-字符集与乱码问题.wmv
sqlite数据库存取中文乱码的全部解决方案(包括其它数据库oracle+sqlserver+mysql) 数据库的连接方式、数据库里存放数据的字体编码、所选编程语言的缺省字体编码。如果在编程中遇到不能正确显示中文时、、、、