zoukankan      html  css  js  c++  java
  • ERROR 1366 (HY000): Incorrect string value: 'xB3xA4xC9xB3' for column

    在用以下方法之前,请先执行下面命令查看。

        show variables like 'character%';  ——查看所有编码方式

        show create table table_name;   ——查看某个表格的编码方式

        status  ——查看

    查看修改mysql编码方式
     
    MySQL的默认编码是Latin1,不支持中文,要支持中午需要把数据库的默认编码修改为gbk或者utf8。 
     
    1、需要以root用户身份登陆才可以查看数据库编码方式(以root用户身份登陆的命令为:>mysql -u root –p,之后两次输入root用户的密码),查看数据库的编码方式命令为: 
    >show variables like 'character%'; 
    +--------------------------+----------------------------+ 
    | 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 | 
    | character_sets_dir | /usr/share/mysql/charsets/ | 
    +--------------------------+----------------------------+ 
    从以上信息可知数据库的编码为latin1,需要修改为gbk或者是utf8; 
    其中,character_set_client为客户端编码方式;character_set_connection为建立连接使用的编码;character_set_database数据库的编码; 
    character_set_results结果集的编码; 
    character_set_server数据库服务器的编码; 
    只要保证以上四个采用的编码方式一样,就不会出现乱码问题。 
    另一个查看数据库编码的命令: 
    >show variables like ‘collation%’; 

    一、网上的解决方案很多,但是试了几个都没成功。能改的地方都改了,my.ini里两个地方[mysql]和[mysqld]都改成了gbk,又多此一举跑MySQLInstanceConfig.exe里也设置了默认字符集为gbk,还有在数据库里也使用了charset gbk来更改字符集,可无一例外中文还是插不进去。

    最后在http://youshini.iteye.com/blog/1073053上又找到一个解决方案,在数据库里使用了alter table content modify author varchar(30) character set gbk;这句话之后成功插入了中文!心中那个鸡冻啊。

    现在知道了,前面把my.ini或者在MySQLInstanceConfig.exe里改变了编码字符集之后只对以后创建的表起作用,对于以前创建的表要使用alter table content modify author varchar(30) character set gbk才可以插入中文,当然,嫌这样一个字段一个字段的修改太麻烦可以使用ALTER TABLE OLD_TABLE CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]直接对整个表操作。
    。这里把问题及解决方案贴出方便后来人!个人总结出mysql数据库要正常插入中文需要三个地方字符集一致:

    1、mysql的初始化字符集(my.ini中修改)

    2、某个具体的database中通过charset gbk或者c gbk修改

    3、最后这个不是必须的,只是如果在中途改了以上两个字符集才需要在此修改。把表中的字段改成和上面两种一样的字符集:通过ALTER TABLE OLD_TABLE CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]修改

    二、最后再附上一篇整体概述的设置mysql支持中文的文章,转于51cto.com

    MySQL数据库默认编码已经是utf8了, default-character-set = utf8,可是向数据库中表中插入中文时,却老是出现 ....xB5xA5xD1xA1 for column...这样的错误,经过查阅网上类型的错误后,发现一个很奇妙的现象,接下来我们就来开始介绍。

    1)、在安装数据库时就设定字符集编码为utf8的环境下

    1.在当前字符集编码为:

    1 Server characterset:    utf8  

    2  

    3 Db      characterset:    utf8  

    4  

    5 Client  characterset:    utf8  

    6  

    7 Conn.  characterset:    utf8 

    下创建数据库:

    (1)插入中文数据,操作不能成功。

    (2)修改字符集编码为:

    8 Server characterset:    utf8  

    9  

    10 Db       characterset:   utf8  

    11  

    12 Client  characterset:    gbk  

    13  

    14 Conn.  characterset:    gbk 

    插入中文数据,显示正常。

    2)、在安装数据库时就设定字符集编码为gbk的环境下

    1.当前字符集编码是:

    15 Server characterset:    gbk  

    16  

    17 Db      characterset:    gbk  

    18  

    19 Client  characterset:   gbk  

    20  

    21 Conn.  characterset:   gbk  

    下创建数据,插入中文数据,操作正常,显示正常。

    2.当前字符集编码为utf8:

    22 Server characterset:   gbk  

    23  

    24 Db      characterset:    utf8  

    25  

    26 Client  characterset:   utf8  

    27  

    28 Conn.  characterset:   utf8 

    3.当前字符集编码为utf8:

    29 Server characterset:    gbk  

    30  

    31 Db      characterset:    gbk  

    32  

    33 Client  characterset:   utf8  

    34  

    35 Conn.  characterset:   utf8 

    插入中文数据,操作不能执行。

    结论:要想能向数据库正常插入中文,必须满足以下条件:

    1.要把字符集设定为能支持中文的gbk或则utf8;

    2.把数据库的Client Characterset和Conn. Characterset的字符集都设定为gbk;

    根据上面的提示 ,我更改了:

    36 SET  character_set_client=gbk;  

    37  

    38 SET character_set_connection=gbk; 

    之后再尝试想数据库插入中文,这时没有出错,能插入可是查询出来是乱码。

    最后再更改; 

    39 SET character_set_results=gbk; 

    这样之后,所有的问题都解决了,能正常插入也能正常显示了。(http://hi.baidu.com/vanadium362/item/ffa64caed7ee5eae29ce9d32

    最后各种数据编码问题:http://bbs.csdn.net/topics/190115814

  • 相关阅读:
    archlinux .bash_history
    Ubuntu环境下挂载新硬盘
    软碟通 UltraISO U启替代品 Win32DiskImager 无设备 无盘符 无u盘 无优盘 解决方案 之diskpart
    delphi Integer overflow
    MSBuild Tools offline
    delphi synedit免费的拼写检查器dll
    git 自定义命令行
    lua编译
    gcc ar
    Windows Subsystem for Linux (WSL)挂载移动硬盘U盘 卸载 c d 盘
  • 原文地址:https://www.cnblogs.com/xing1/p/8056012.html
Copyright © 2011-2022 走看看