免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1064 | 回复: 0
打印 上一主题 下一主题

Mysql 数据库 字符集 及 中文乱码问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-22 08:53 |只看该作者 |倒序浏览
        Mysql中文乱码问题非常常见,网上搜到的解决方法也各种各样,都是给出一堆设置参数,就号称可以解决所有乱码问题,但不少童鞋照着做却不能解决问题,偶也深有感触,今天拿出时间仔细研究了一下mysql字符集,从原理上给大家解惑,让大家再见到中文乱码问题能够迅速确定问题在哪,迅速解决。
        mysql数据库字符集有以下五个设置级别:服务器级、数据库级、表级、列级和连接级,
        1)服务器级默认是latin1,可在mysql配置文件[mysqld]节点下通过default-character-set=utf8设置
        2)数据库级默认继承服务器级,可在创建数据库时指定:create database yp default character set utf8;
        3)表级默认继承数据库级,可在建表时指定:create table `t1` (`id` integer) DEFAULT CHARSET=utf8;
        4)列级默认继承表级,可在建表时指定:create table t1 (col1 VARCHAR(5) CHARACTER SET utf8);
        5)连接级是指定客户端连接时的字符集,mysql客户端命令可在配置文件[client]节点设置:
default-character-set=utf8,其他应用连接时可各自具体设置,不过一般不需要自行设置,如django或php这类的连接默认都是utf8字符。

        字符集设置的优先级:4>3>2>1>5,中文乱码问题按照这几个级别去检查,很快即可找到问题所在。
        1)首先查看表级和列级字符集:show create table table_name;
         如果有设置,检查字符集是否正确,如果错误需重新建表。
         如果没有明确设置请检查下一个级别。
        2)show create database db_name;
        如果有设置,检查字符集是否正确,如果错误请更改数据库字符集,同时请重新建表(重要
        如果没有设置请检查下一个级别。
        3)show variables like 'character_set%';
        检查character_set_server是否正确,如果错误请更改,同时更改数据库字符集(重要),重新建表(重要)。

        如果到此时都没有问题,那就是你的连接问题了,请设置你的连接字符集,使其能正确表示中文。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP