博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql 不能插入中文和显示中文
阅读量:3588 次
发布时间:2019-05-20

本文共 3131 字,大约阅读时间需要 10 分钟。

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

参考:

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,来编译文件,这个图形变异软件有一个选项是可以把你所写的东西转换

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

 

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

参考:

查看表的结构:

  mysql> show create users;
  ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
  corresponds to your MySQL server version for the right syntax to use near 'users
  ' at line 1
  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> desc users;
  +----------+----------+------+-----+---------+-------+
  | Field | Type | Null | Key | Default | Extra |
  +----------+----------+------+-----+---------+-------+
  | userid | int(11) | YES | | NULL | |
  | username | char(20) | YES | | NULL | |
  +----------+----------+------+-----+---------+-------+
  2 rows in set (0.02 sec)
  这时向表中插入中文然后有错误。
  mysql> insert into users values(88,'中文');
  ERROR 1366 (HY000): Incorrect string value: '\xD6\xD0\xCE\xC4' for column 'usern
  ame' at row 1
  mysql> insert into users values(88,'中文');
  ERROR 1366 (HY000): Incorrect string value: '\xD6\xD0\xCE\xC4' 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: '\xC0\xEE\xCB\xC4' for column 'usern
  ame' at row 1
  mysql> alter table users modify username char(20) character set gbk;
  ERROR 1366 (HY000): Incorrect string value: '\xC0\xEE\xCB\xC4' 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)

转载地址:http://ebpwn.baihongyu.com/

你可能感兴趣的文章
本科毕设完整流程和注意事项
查看>>
不要想着憋大招,先完成每个小招
查看>>
ps中怎么把一张图片的一种颜色全部替换成另外一种颜色
查看>>
答辩PPT撰写和答辩注意事项
查看>>
第二次实习的实习总结
查看>>
PPT的一些常用操作
查看>>
Java面试题解析(基础篇,附答案)
查看>>
Spring 常用的三种注入方式
查看>>
MyBatis 一级缓存在分布式下的坑你知道吗?
查看>>
2020年2月JVM面试的30个知识点
查看>>
在家办公7天整理Spring Cloud知识点大全
查看>>
看看这些Java代码开发规范吧!你好,我好,大家好!
查看>>
2020年3月,47个经典Spring面试题详解(附带答案)
查看>>
python实现Mapreduce的wordcount
查看>>
Linux字符设备驱动编(步骤,框架(面向对象),分层)
查看>>
linux高级字符驱动之输入子系统
查看>>
代理与反射
查看>>
面向对象
查看>>
训练并导出tensorflow Lite模型中的一些问题 及解决办法
查看>>
QQ小程序百度网盘中的文件保存和下载
查看>>