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

  • 相关阅读:
    xx系统需求分析第七稿--权限管理(一)
    第四周学习进度总结
    hbase的Shell命令操作
    软件需求最佳实践读书笔记一
    hbase的Java基本操作
    Java 面向对象编程之接口
    Java 面向对象编程之继承的super关键词
    Java核心基础之数据类型
    Java 导出Excel
    JavaSE基础知识之修饰符和使用场景,你真的了解嘛
  • 原文地址:https://www.cnblogs.com/xing1/p/8056012.html
Copyright © 2011-2022 走看看