MySQL乱码问题 快把我整疯了

jinbi 2010-05-17 11:20:23
中文乱码问题

用insert插入数据库的中文是乱码

以下是我查询的数据库的 编码方式

数据库 milk 下面有表 staff

分别执行了 下面几条命令
show create table staff;
show full fields from staff;
show create database milk
show variables like '%char%';
show variables like '%coll%';
select * from staff;
insert into staff(staffname,work,password,useful) values ("张三","审核","
1","有效");
并附有返回结果
另外我再该库基础上做了一个系统,通过系统往里面插入数据正常 但是直接执行增删查改等语句就会出现中文乱码的问题
系统用的是Struts2+Spring+hibernate开发的

求大家指点迷津

Enter password: ****
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11 to server version: 5.0.22-community-nt

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use milk
Database changed
mysql> show create table staff;
+-------+-----------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-----------------------------------------+
| Table | Create Table


|
+-------+-----------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-----------------------------------------+
| staff | CREATE TABLE `staff` (
`staffID` int(11) NOT NULL auto_increment,
`staffName` char(20) default NULL,
`work` char(20) default NULL,
`password` char(20) default NULL,
`useful` char(20) default NULL,
PRIMARY KEY (`staffID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+-----------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-----------------------------------------+
1 row in set (0.01 sec)

mysql> show full fields from staff;
+-----------+----------+-----------------+------+-----+---------+---------------
-+---------------------------------+---------+
| Field | Type | Collation | Null | Key | Default | Extra
| Privileges | Comment |
+-----------+----------+-----------------+------+-----+---------+---------------
-+---------------------------------+---------+
| staffID | int(11) | NULL | NO | PRI | NULL | auto_increment
| select,insert,update,references | |
| staffName | char(20) | utf8_general_ci | YES | | NULL |
| select,insert,update,references | |
| work | char(20) | utf8_general_ci | YES | | NULL |
| select,insert,update,references | |
| password | char(20) | utf8_general_ci | YES | | NULL |
| select,insert,update,references | |
| useful | char(20) | utf8_general_ci | YES | | NULL |
| select,insert,update,references | |
+-----------+----------+-----------------+------+-----+---------+---------------
-+---------------------------------+---------+
5 rows in set (0.00 sec)

mysql> show create database milk
-> ;
+----------+---------------------------------------------------------------+
| Database | Create Database |
+----------+---------------------------------------------------------------+
| milk | CREATE DATABASE `milk` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+---------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> show variables like '%char%';
+--------------------------+----------------------------------------------------
-----+
| Variable_name | Value
|
+--------------------------+----------------------------------------------------
-----+
| character_set_client | utf8
|
| character_set_connection | utf8
|
| character_set_database | utf8
|
| character_set_filesystem | binary
|
| character_set_results | utf8
|
| character_set_server | utf8
|
| character_set_system | utf8
|
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.0\share\chars
ets\ |
+--------------------------+----------------------------------------------------
-----+
8 rows in set (0.00 sec)

mysql> show variables like '%coll%';
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)

mysql> select * from staff;
+---------+-----------+-----------+----------+--------+
| staffID | staffName | work | password | useful |
+---------+-----------+-----------+----------+--------+
| 1 | l | 鎿嶄綔鍛? | 1 | 鏈夋晥 |
| 2 | y | 瀹℃牳浜? | 1 | 鏈夋晥 |
| 3 | guyj | 鎿嶄綔鍛? | 1 | 鏃犳晥 |
+---------+-----------+-----------+----------+--------+
3 rows in set (0.00 sec)

mysql> insert into staff(staffname,work,password,useful) values ("张三","审核","
1","有效");
ERROR 1406 (22001): Data too long for column 'staffName' at row 1
mysql>
...全文
39 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinbi 2010-05-17
  • 打赏
  • 举报
回复
果然是高手 一出马就搞定了 谢谢了 这个问题困扰了我好久
ACMAIN_CHM 2010-05-17
  • 打赏
  • 举报
回复
不用担心你set names 'gbk';之后,数据库实际存放的还是UTF8的字符。
ACMAIN_CHM 2010-05-17
  • 打赏
  • 举报
回复
set names 'gbk';
insert into staff(staffname,work,password,useful) values ("张三","审核","1","有效");

试一下。WINDOWS下命令行工具中(“DOS”)中无法处理准确地处理UTF8,所以用 GBK.

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧