mysql 不能插入中文和显示中文 mysql 显示中文
http://blog.sina.com.cn/s/blog_48f0f4da0100cktq.html
一)不能显示中文解决办法:
参考: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 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)
windows平台只要在my.ini文件中设置
[client]
default-character-set=gbk
[mysqld]
character-set-server=utf8
就okay了,除此之外,命令下的任何更改都是无效的。
本人的测试是这样,client编码若设置为gbk,即使你在create database or table 的时候,修改编码也是无效的。
推荐阅读
-
mysql 不能插入中文和显示中文 mysql 显示中文
-
应用程序插入mysql中文出现乱码问题解决 博客分类: 数据库mysql
-
数据库中文显示不了,怎么办 mysql中文编码
-
JAVA生成PDF文件(根据模板和html 显示中文)
-
SecureCRT连接Linux显示Mysql记录中文乱码 博客分类: linux精选
-
Lucene中文分词和高亮显示 博客分类: Lucene lucene
-
DIV 显示边框 和 JS设置DIV可编辑,附送DTHML 中文手册 JavaScriptCSSHTML
-
mysql无法插入中文的解决办法:修改数据库编码为utf-8
-
MySQL中文汉字转拼音的自定义函数和使用实例(首字的首字母)
-
DOS命令行窗口mysql中文显示乱码问题解决方法