Chinaunix首页 | 论坛 | 博客
  • 博客访问: 55121
  • 博文数量: 9
  • 博客积分: 269
  • 博客等级: 二等列兵
  • 技术积分: 110
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-14 09:43
文章分类

全部博文(9)

文章存档

2012年(2)

2011年(6)

2010年(1)

分类: Mysql/postgreSQL

2011-07-08 11:48:11

        Mysql中文乱码问题非常常见,网上搜到的解决方法也各种各样,都是给出一堆设置参数,就号称可以解决所有乱码问题,但不少童鞋照着做却不能解决问题,偶也深有感触,今天拿出时间仔细研究了一下mysql字符集,从原理上给大家解惑,让大家再见到中文乱码问题能够迅速确定问题在哪,迅速解决。
        mysql数据库字符集有以下五个设置级别:服务器级、数据库级、表级、列级和连接级,
        1)服务器级默认是latin1,可在mysql配置文件[mysqld]节点下通过default-character-set=utf8设置;(mysql 5.5配置 character-set-server=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是否正确,如果错误请更改,同时更改数据库字符集(重要),重新建表(重要)。

        如果到此时都没有问题,那就是你的连接问题了,请设置你的连接字符集,使其能正确表示中文。
阅读(1419) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~