Mysql查看编码方式专题

来源:互联网 发布:java线程池的作用 编辑:程序博客网 时间:2024/05/16 01:17
\'Mysql查看编码方式专题Mysql查看编码方式专题
  • Mysql查看编码方式专题
    一、查看数据库的字符集
    show variables like \'character\\_set\\_%\';
    输出:
    +--------------------------+--------+
    | Variable_name            | Value  |
    +--------------------------+--------+
    | character_set_client     | latin1 |
    | character_set_connection | latin1 |
    | character_set_database   | latin1 |
    | character_set_filesystem | binary |
    | character_set_results    | latin1 |
    | character_set_server     | latin1 |
    | character_set_system     | utf8   |
    +--------------------------+--------+
    结合以下的编码表我们发现当前的数据库系统的编码:
    latin1_bin  
    西欧 (多语言), 二进制  
     
    binary  
    二进制  
     
    以上是我在linux环境中的查看的结果编码集了。我现在WIN平台上面查看编码集结果如:
    +--------------------------+--------+
    | Variable_name            | Value  |
    +--------------------------+--------+
    | character_set_client     | utf8   |
    | character_set_connection | utf8   |
    | character_set_database   | utf8   |
    | character_set_filesystem | binary |
    | character_set_results    | utf8   |
    | character_set_server     | utf8   |
    | character_set_system     | utf8   |
    +--------------------------+--------+
    为什么会出现不一致的情况呢?在我本机上面是显示的UTF-8.而在LINUX上面居然是
     
    二、通过命令修改其编码
    创建数据库指定数据库的字符集
    mysql>create database mydb character set utf-8;#直接指定其编码
    直接通过命令进行修改
    set character_set_client=utf8;
    set character_set_connection=utf8;
    set character_set_database=utf8;
    set character_set_results=utf8;
    set character_set_server=utf8;
    修改完了之后再查询
    show variables like \'character\\_set\\_%\';
    +--------------------------+--------+
    | Variable_name            | Value  |
    +--------------------------+--------+
    | character_set_client     | utf8   |
    | character_set_connection | utf8   |
    | character_set_database   | utf8   |
    | character_set_filesystem | binary |
    | character_set_results    | utf8   |
    | character_set_server     | utf8   |
    | character_set_system     | utf8   |
    +--------------------------+--------+
    结果全部都调整修改成UTF-8了!
    修改完了之后我看 select * from address_address; 出现乱码了!Django也乱码
     
    三、解决数据导入导出的乱码问题
    #create database nginxdjango;
    # use nginxdjango;
    # show variables like \'character\\_set\\_%\';
    #打印输出居然是如下
    +--------------------------+--------+
    | Variable_name            | Value  |
    +--------------------------+--------+
    | character_set_client     | latin1 |
    | character_set_connection | latin1 |
    | character_set_database   | latin1 |
    | character_set_filesystem | binary |
    | character_set_results    | latin1 |
    | character_set_server     | latin1 |
    | character_set_system     | utf8   |
    +--------------------------+--------+
    依旧是latin编码的。
    OK。我将其编码设置一下
    set character_set_client=utf8;
    set character_set_connection=utf8;
    set character_set_database=utf8;
    set character_set_results=utf8;
    set character_set_server=utf8;


    再查询一下其编码格式为: +--------------------------+--------+
    | Variable_name            | Value  |
    +--------------------------+--------+
    | character_set_client     | utf8   |
    | character_set_connection | utf8   |
    | character_set_database   | utf8   |
    | character_set_filesystem | binary |
    | character_set_results    | utf8   |
    | character_set_server     | utf8   |
    | character_set_system     | utf8   |
    +--------------------------+--------+
    现在将数据导进来
    source /python/django/sql/nginxdjango.sql;
    其中的 nginxdjango.sql 其编码也是utf-8 格式的!
     
    导进来 数据库查看居然还是乱码不过程序跑起来是正常了!
     
     
     
     
     
     
    MySQL字符集编码的类型种类
    gb2312_chinese_ci和gbk_chinese_ci以及gb2312_bin,gbk_bin的区别
    gb2312_chinese_CI : 只支持简体中文
    gb2312_BIN   :而gb2312_bin可以说是gb2312_chinese_ci的一个子集,
    而且gb2312_BIN是二进制存储.区分大小写数据库编码格式就意义不一样了 
    gbk_chinese_CI   支持简体中文和繁体
    gbk_bin   解释同gb2312_BIN     对应gbk_chinese_CI 
    PS:GBK包括了简体与繁体两种类型
     
     新篇:2010-03-09
    MySQL中默认字符集的设置有四级:服务器级,数据库级,表级 。最终是字段级 的字符集设置。注意前三种均为默认设置,并不代码你的字段最终会使用这个字符集设置。所以我们建议要用show create table table ; 或show full fields from tableName; 来检查当前表中字段的字符集设置。
    MySQL中关于连接环境的字符集设置有  Client端,connection, results 通过这些参数,MySQL就知道你的客户端工具用的是什么字符集,结果集应该是什么字符集。这样MySQL就会做必要的翻译,一旦这些参数有误,自然会导致字符串在转输过程中的转换错误。基本上99%的乱码由些造成。
    1. 数据库表中字段的字符集设置 。show create table TableName 或 show full columns from tableName 
    mysql> show create table t1;
    mysql> show full columns from t1; 查看列的编码类型
    3. 查看数据库的编码格式
    show create database test; 

    输出:CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8 */

    2. 当前联接系统参数  show variables like \'char%\' 

    mysql> show variables like \'char%\';

    1. 中文,请确保 表中该字段的字符集为中文兼容: 
     big5     | Big5 Traditional Chinese
     gb2312   | GB2312 Simplified Chinese
     gbk      | GBK Simplified Chinese
     utf8     | UTF-8 Unicode

    [其它补充]

    修改数据库的字符集
       mysql>use mydb
       mysql>alter database mydb character set utf-8;

    创建数据库指定数据库的字符集
       mysql>create database mydb character set utf-8;
    2010-05-02 新添加进来
    show variables like \'character\\_set\\_%\'; 所查看到了几项中其中有这三项是受客户端影响
    character_set_client
    character_set_connection
    character_set_results      

    而这三项是可以通过 set names utf8|set names gbk来设置的!只是说明当前连接的客户端的编码情况并没有影响到数据库服务器本身的编码情况

     
     
     
  • 原创粉丝点击
    热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 苹果的访问限制密码忘了怎么办 手机下雨天进水声音出了问题怎么办 胸太小了该怎么办经常揉胸会变大吗 鼻冲洗器冲鼻子耳朵进水怎么办 手表进水了然后里面有水珠怎么办 玩游戏后头晕恶心想吐怎么办 吃完美林3小时后又发烧怎么办 颜值和身材都是负分怎么办 妈妈离婚又有一个孩子我该怎么办 孩子妈妈天天给孩子吃药我该怎么办 被像蚂蚁有翅膀的虫子咬了怎么办 1周半宝宝扭脚丫肿了怎么办 离婚后前夫带孩子走了找不到怎么办 宜昌全视之眼逃出卢浮宫怎么办 qq号被盗了密保手机也被改怎么办 乐视盒子控播平台认证怎么办 购买冲气娃娃被发现了怎么办 买了充气娃娃太美舍不得扔怎么办 一品官老爷账号密码忘了怎么办 苹果手机加声音显示出耳机怎么办 被删除的照片恢复后效果变差怎么办 w10系统玩刺激战场声音小怎么办 宝宝不咳嗽但是喉咙有痰怎么办 深圳限行如果车堵在路上怎么办 奔跑吧qq中奖我填写资料怎么办 微信之前绑定的手机号丢了怎么办 龙之谷手游换装备洗炼材料怎么办 小学生在班上碰到流氓同学怎么办 问道手游仓库密码忘了怎么办 问道手游安全码忘了怎么办 问道手游账号密码忘了怎么办 坐一天一夜长途车腰疼怎么办 智联的简历一直说不完整怎么办 智联招聘简历投错了怎么办 投简历的公司写错面试时怎么办 从原单位辞职后档案一直没提怎么办 手机因一些不良软件扣费怎么办 苹果手机玩崩坏3卡顿怎么办 以前很帅现在变得好难看了怎么办 偷了室友东西被发现了该怎么办 自己不喜欢狗但室友养狗怎么办