有关mysql字符集和中文乱码问题

news/2024/5/18 14:20:30 标签: MySQL, PHP, 配置管理, BBS
转自-----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存取出来中文是正确的。

http://www.niftyadmin.cn/n/873842.html

相关文章

宏参数的替换需要注意

在c中我们会大量的用到宏定义, 宏既可以定义变量 也可以定义函数,这里我们讲一下宏中参数替换的 注意电 例如 #define TEST_FUN (h) \ h->next 0;\ 引用中 我们这样用 struct a; TEST_FUN(&a) // 注意里就错了…

Quartz 的Cron时间设置

转自: [url]http://hi.baidu.com/lincongsky/blog/item/4d97250029e61282e950cdad.html[/url] 一个Cron-表达式是一个由六至七个字段组成由空格分隔的字符串,其中6个字段是必须的而一个是可选的,如下: 字段名 允许的值 允许的特殊…

linux kernel modules 使用和debug 问题

岁月如梭 春秋交替 人间的轮换 抹不去的记忆,2020 我们以同前行。 Linux 的好处在于可以方便快捷的插入内核模块。 我们在引用 内核模块时 又是需要确定 他的模块依赖。 今天我们就讲一下 modules 的debug 和开发注意事项。 内核modules 的编译: 是内核…

spring配置quartz

<?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xmlns:jee"http://www.springframework.org/schema/jee&…

linux c debug 工具介绍 strace , lsof, gdb, readelf,objdump

linux c 中debug 远比coding 重要&#xff0c;下面我们就介绍一下 strace,gdb,readelf , objdump 的 用途和各自的用处。 如果需要追踪程序的run的追踪 就需要用到&#xff0c;gdb 和 strace 但是 gdb 的trace link 比较麻烦如果是嵌入需要设置gdb server 这个比较麻烦&#x…

linux kernel 启动中需要的 .dtb 文件

linux kernel 启动块 其实很小&#xff0c;之前会把启动参数编译进code 里这样 vmlinux.lz 就会比比较到 而且调用比较费时间&#xff0c;所以就需要需要kernel.dtb 文件来辅助启动。 所以在kernel 启动项中比较重要&#xff0c;不能没有 不然就无法正常启动。

Quartz使用----与Spring结合

<?xml version"1.0" encoding"GBK"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans><description>Spring Quick start</descript…

python ai 项目_汇总!AI开发者必备的Python与机器学习开源项目推荐

AIRX团队整理TensorFlowTensorFlow是一个端到端的机器学习开源平台。由工具、库和社区资源组成的全面、灵活的生态系统&#xff0c;使开发人员能够轻松地构建和部署基于ML的应用程序。TensorFlow最初是由谷歌机器智能研究组织的谷歌大脑团队的研究人员和工程师开发的&#xff0…