zoukankan      html  css  js  c++  java
  • mysql 不能插入中文和显示中文

    一)不能显示中文解决办法:

    参考:http://bbs3.chinaunix.net/thread-880131-1-1.html

    1:windows平台,因为windows操作系统默认的是用了gb2312这个字符,而mysql在安装的时候,

      默认的是客户端和服务器都用了latin1,所以这就导致一个字符集和字符校验不匹配的问题,

      这个时候只需要找到mysql的配置文件my.ini 找到default-character_set ,把他的参数改

      成gb2312就可以了,一共有两个这样的参数,一个是对客户的,一个是服务器的,我一般建

      议是把服务器的设置成国际通用的字符utf8。
      2: linux平台,在linux平台上安装mysql的时候,给于的自由度是很大的,你可以在安装

      选项./configure中找到数据库的字符设置(这个还要麻烦你自己看readme安装文件 ),这个时

      候最好是把字符设置成gbk,因为这个字符集也是linux平台默认安装的中文字符集,然后

      在/etc下找到my.cnf文件(这个文件在安装mysql后要自己把他转移到/etc/下,除非你是

      rpm安装).需要注意的是linux里的很多工具都是不支持中文的,哪怕是vi,你可以在startx

      后执行命令kwrite,来编译文件,这个图形变异软件有一个选项是可以把你所写的东西转换

      成任意的字符集,很不错,

    二)不能插入中文解决办法:

    参考:http://blog.csdn.net/ancky_zhang/archive/2008/10/15/3078540.aspx

    查看表的结构:mysql> show create table users;

    mysql> show create table users;
      +-------+-----------------------------------------------------------------------
      ------------------------------------------------------------------------------+
      | Table | Create Table
      |
      +-------+-----------------------------------------------------------------------
      ------------------------------------------------------------------------------+
      | users | CREATE TABLE `users` (
      `userid` int(11) default NULL,
      `username` char(20) character set latin1 default NULL
      ) ENGINE=InnoDB DEFAULT CHARSET=gbk |
      +-------+-----------------------------------------------------------------------
      ------------------------------------------------------------------------------+
      1 row in set (0.00 sec)

    这时向表中插入中文然后有错误。
      mysql> insert into users values(88,'中文');
      ERROR 1366 (HY000): Incorrect string value: 'xD6xD0xCExC4' for column 'usern
      ame' at row 1
      mysql> insert into users values(88,'中文');
      ERROR 1366 (HY000): Incorrect string value: 'xD6xD0xCExC4' for column 'usern
      ame' at row 1

      还要更改users表的username的字符集。
      mysql> alter table users modify username char(20) character set gbk;
      ERROR 1366 (HY000): Incorrect string value: 'xC0xEExCBxC4' for column 'usern
      ame' at row 1
      mysql> alter table users modify username char(20) character set gbk;
      ERROR 1366 (HY000): Incorrect string value: 'xC0xEExCBxC4' for column 'usern
      ame' at row 1

    因为表中已经有数据,所以更改username字符集的操作没有成功
      清空users表中的数据
      mysql> truncate table users;
      Query OK, 3 rows affected (0.01 sec)

      从新更改user表中username的字符集
      mysql> alter table users modify username char(20) character set gbk;
      Query OK, 0 rows affected (0.06 sec)
      Records: 0 Duplicates: 0 Warnings: 0

      这时再插入中文字符,插入成功。
      mysql> insert into users values(88,'中文');
      Query OK, 1 row affected (0.01 sec)

      mysql> select * from users;
      +--------+----------+
      | userid | username |
      +--------+----------+
      | 88 | 中文 |
      +--------+----------+
      1 row in set (0.00 sec)

    下面是我自己的一个例子

  • 相关阅读:
    卡尔曼滤波公式
    在博客园主页添加github链接
    博客园插入latex公式
    Leetcode刷题(2020/03/20)
    git设置http代理
    ubuntu下解压.zip文件乱码
    Linux系统中的变量PATH
    【windows】在控制面板卸载软件的时候,出现2502,2503的问题
    替换openjdk的版本时遇到报错Transaction check error
    安装Python3.6.4后,在使用numpy时报错RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88
  • 原文地址:https://www.cnblogs.com/braveym/p/6713300.html
Copyright © 2011-2022 走看看