最近正在学习mysql,安装环境是windows server 2003 32位操作系统+mysql 5.1.47
同时也安装了mysql命令行以及mysql workbench
这里是test数据库
create table fortest(empno int auto_increment,empname nvarchar(20) not null,constraint pk_fortest primary key(empno))default charset=utf8;
然后插入了一条数据
set names character utf8;
insert into fortest(empno)values('欧阳菲菲');
发现插入不了,总是报错,具体错误如下:
这种情况主要是由于默认编码设置错误引起的。
现在就查看一下mysql服务器的配置情况吧。
具体命令就是
show variables like 'character%';
查出的结果如下:
具体解决方法:
使用MySQL命令行可以实现许多我们需要的功能,不过在使用MySQL命令行的时候,有一个问题是在MySQL命令行插入中文数据或者查询中文数据时出现乱码,或者显示不对。
在MySQL命令行输入:show variables like ‘character_set_%’;
查看当前配置的编码;
在MySQL命令行输入 :set names utf8;
则等同于
set character_set_client=utf8;
set character_set_results=utf8;
set character_set_connection=utf8;
这三条命令
在命令行插入数据之前
执行命令set names gbk;或者set names gb2312;
再插入
查询数据之前
执行命令set names gbk;或者set names gb2312;
完了之后再set names utf8;
这样就能正常插入和查询中文并且保持数据库编码为utf8
对于mysql workbench中的查询出现中文乱码主要是由于mysql服务器的配置中默认设置的编码不是utf8引起的,具体在windows操作系统下,要修改mysql安装目录下的my.ini
(linux下则是安装目录下的my.cnf文件)
主要修改的部分如下:
[client]
port=3306
[mysql]
default-character-set=utf8
[mysqld]
# The TCP/IP Port the MySQL Server will listen on
port=3306
#Path to installation directory. All paths are usually resolved relative to this.
basedir="D:/Program Files/MySQL/MySQL Server 5.1/"
#Path to the database root
datadir="D:/MySQL/MySQL Server 5.1/Data/"
# The default character set that will be used when a new schema or table is
# created and no character set is defined
default-character-set=utf8
具体修改的部分就是红色粗体字的文字部分。
转载自:http://blog.sina.com.cn/s/blog_8a3a624901018j83.html