以下是我的四个设置关于编码的:
1.$mysql_home\my.ini配置文件更改
[mysql]
-->default-character-set=utf8 (插入中文时提示data too long for column...)
[mysqld]
-->default-character-set=utf8
2.创建数据库时设置编码
create database dbname CHARACTER SET utf8
或修改$mysql_home\data目录下的对应数据库的db.opt配置文件
default-character-set=utf8
default-collation=utf8_chinese_ci
3.mysql客户端
mysql>set names utf8;(这句根本无效,你重新连接服务器或者再开一个窗口用同一个账号或者不同账号连接服务器这些编码也会还原)
4.数据库连接串url
url="jdbc:mysql://localhost:3306/taa?&useUnicode=true&characterEncoding=utf8";
从第四条设置大家应该看得出,我是写了个java用jdbc连接数据库,进行小小测试! help !
1.$mysql_home\my.ini配置文件更改
[mysql]
-->default-character-set=utf8 (插入中文时提示data too long for column...)
[mysqld]
-->default-character-set=utf8
2.创建数据库时设置编码
create database dbname CHARACTER SET utf8
或修改$mysql_home\data目录下的对应数据库的db.opt配置文件
default-character-set=utf8
default-collation=utf8_chinese_ci
3.mysql客户端
mysql>set names utf8;(这句根本无效,你重新连接服务器或者再开一个窗口用同一个账号或者不同账号连接服务器这些编码也会还原)
4.数据库连接串url
url="jdbc:mysql://localhost:3306/taa?&useUnicode=true&characterEncoding=utf8";
从第四条设置大家应该看得出,我是写了个java用jdbc连接数据库,进行小小测试! help !
3.mysql客户端
mysql>set names utf8;
(这句根本无效,你重启服务器然后再连接服务器或者再开一个窗口用同一个账号或者不同账号连接服务
mysql>show variables like '%char%';这条语句可以验证第3条.
mysql>flush privileges;
参考下贴中的检查方法,贴出结果。
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码
意思是,我写了个java测试程序使用jdbc连接数据库,url="jdbc:mysql://localhost:3306/taa?useUnicode=true&characterEncoding=utf-8";
java程序中获取含中文的数据时出现"????"乱码.如果改了my.ini
中的-->default-character-set=utf8 (插入中文时提示data too long for column...)
show variables like '%char' 显示示的都为utf8,但出现插入中文时报错,故现在该设置我保留为
default-character-set=latin1mysql> show create table tablett;
+---------+--------------------------------------------------------------
---------------------------------------------------------+
| Table | Create Table
|
+---------+--------------------------------------------------------------
---------------------------------------------------------+
| tablett | CREATE TABLE `tablett` (
`id` int(11) default NULL,
`name` varchar(20) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+---------+--------------------------------------------------------------
---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> show full columns from tablett;
+-------+-------------+-----------------+------+-----+---------+-------+--------
-------------------------+---------+
| Field | Type | Collation | Null | Key | Default | Extra | Privile
ges | Comment |
+-------+-------------+-----------------+------+-----+---------+-------+--------
-------------------------+---------+
| id | int(11) | NULL | YES | | NULL | | select,
insert,update,references | |
| name | varchar(20) | utf8_general_ci | YES | | NULL | | select,
insert,update,references | |
+-------+-------------+-----------------+------+-----+---------+-------+--------
-------------------------+---------+
2 rows in set (0.00 sec)mysql> show variables like '%char%';
+--------------------------+----------------------------------------------------
-----+
| Variable_name | Value
|
+--------------------------+----------------------------------------------------
-----+
| character_set_client | latin1
|
| character_set_connection | latin1
|
| character_set_database | utf8
|
| character_set_filesystem | binary
|
| character_set_results | latin1
|
| character_set_server | latin1
|
| character_set_system | utf8
|
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.0\share\chars
ets\ |
+--------------------------+----------------------------------------------------
-----+
8 rows in set (0.01 sec)
我自己弄好了!谢谢.正在分析解决访问题的根本原因....想问几个额外问题:
1.my.ini配置中-->default-character-set=utf8 (为什么会报错:"插入中文时提示data too long for column...")
2.mysql>set names 字符编码 (重启服务器再连或使用其它或者同一账户连接服务器时,设置的编码为什么会还原???)
3.有没有比较深入分析的资料推荐?
SET NAMES 只是改变了当前服务中的设置,当MYSQL重启时会重新从INI文件中取值或者使用默认值。3.有没有比较深入分析的资料推荐?#3楼 的回复中有一个帖子,
为什么会报错:"插入中文时提示data too long for column...") 这个确实不清楚.| Table | Create Table
|
+---------+------------------------------------------------------
---------------------------------------------------------+
| tablett | CREATE TABLE `tablett` (
`id` int(11) default NULL,
`name` varchar(20) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+---------+------------------------------------------------------
---------------------------------------------------------+mysql> insert into tablett value(1,'兰兰');
ERROR 1406 (22001): Data too long for column 'name' at row 1