中文显示乱码问题,菜鸟求救,看了论坛很多帖子就是解决不了! 本帖最后由 wbliang2011 于 2012-12-30 18:10:23 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 client,serverresults要一致推荐你就使用utf8 按下贴中方法贴出你的检查结果。 直接贴文本即可不必贴图。http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspxMySQL 中文显示乱码 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.5\share\charsets\ |+--------------------------+---------------------------------------------------------+8 rows in set (0.00 sec)mysql> select name from player where id=100001;+---------------+| name |+---------------+| 濞撶?100001 |+---------------+1 row in set (0.03 sec)已经一致啦,可还是显示乱码 mysql> show create table player;+--------+---------------------------------------------------------------------------------------------------------------------------+| Table | Create Table |+--------+---------------------------------------------------------------------------------------------------------------------------+| player | CREATE TABLE `player` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL DEFAULT '', `account_id` int(11) NOT NULL DEFAULT '0', `account_name` varchar(50) NOT NULL DEFAULT '', PRIMARY KEY (`Id`)) ENGINE=MyISAM AUTO_INCREMENT=1838561 DEFAULT CHARSET=utf8 |+--------+---------------------------------------------------------------------------------------------------------------------------+1 row in set (0.08 sec)还有上面的 mysql> use test;Database changedmysql> show create table player;+--------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| Table | Create Table |+--------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| player | CREATE TABLE `player` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL DEFAULT '', `account_id` int(11) NOT NULL DEFAULT '0', `account_name` varchar(50) NOT NULL DEFAULT '', PRIMARY KEY (`Id`)) ENGINE=MyISAM AUTO_INCREMENT=1838561 DEFAULT CHARSET=utf8 |+--------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+1 row in set (0.08 sec)mysql> show full columns from player;+--------------+-------------+-----------------+------+-----+---------+----------------+---------------------------------+---------+| Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |+--------------+-------------+-----------------+------+-----+---------+----------------+---------------------------------+---------+| Id | int(11) | NULL | NO | PRI | NULL | auto_increment | select,insert,update,references | || name | varchar(50) | utf8_general_ci | NO | | | | select,insert,update,references | || account_id | int(11) | NULL | NO | | 0 | | select,insert,update,references | || account_name | varchar(50) | utf8_general_ci | NO | | | | select,insert,update,references | |+--------------+-------------+-----------------+------+-----+---------+----------------+---------------------------------+---------+4 rows in set (0.03 sec) 先 set names 'gbk';insert into player (name) values ('楼主');select * from player where ....看一下你的结果是否正常,如果正常,则说明之前插入到表中的记录中的编码不对。需要人工修正。 的确是这个问题,可以正常显示,但是要怎么修改呢?我把 player.sql文件中的 DEFAULT CHARSET=utf8 改成 gbk 后输出没有问题,但为什么utf8就不行呢?DROP TABLE IF EXISTS `player`;CREATE TABLE `player` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL DEFAULT '', `account_id` int(11) NOT NULL DEFAULT '0', `account_name` varchar(50) NOT NULL DEFAULT '', PRIMARY KEY (`Id`)) ENGINE=MyISAM AUTO_INCREMENT=1838561 DEFAULT CHARSET=utf8;## Dumping data for table player#INSERT INTO `player` VALUES (100001,'游客100001',100001,'guest100001');INSERT INTO `player` VALUES (100012,'游客100012',100012,'guest100012');INSERT INTO `player` VALUES (100016,'游客100016',100016,'guest100016'); 因为WINDOWS的命令行CMD无法有效的支持UTF8 mysql:为什么要分开过程和函数 mysql DB 索引建立 wampserver 2.0.i下show variables 找不到datadir变量 关于 MYSQL存储过程 mysql中,如何设计表使之可以容纳上亿条数据? 第一次用 sql建表 出错 大家帮看看 在线等 大家来帮忙看看,这样的Sql语句是不是有问题? 安装DBD-MYSQL问题? mysql导入时发出报警的声音 求教MySQL C++连接时程序崩溃时的异常处理问题 这个SQL如何优化 mysql是否有postgreSQL一样的美元包围符号
server
results
要一致
推荐你就使用utf8
MySQL 中文显示乱码
+--------------------------+----------------------------------------------------
-----+
| 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.5\share\chars
ets\ |
+--------------------------+----------------------------------------------------
-----+
8 rows in set (0.00 sec)mysql> select name from player where id=100001;
+---------------+
| name |
+---------------+
| 濞撶?100001 |
+---------------+
1 row in set (0.03 sec)已经一致啦,可还是显示乱码
+--------+----------------------------------------------------------------------
-----------------------------------------------------+
| Table | Create Table
|
+--------+----------------------------------------------------------------------
-----------------------------------------------------+
| player | CREATE TABLE `player` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL DEFAULT '',
`account_id` int(11) NOT NULL DEFAULT '0',
`account_name` varchar(50) NOT NULL DEFAULT '',
PRIMARY KEY (`Id`)
) ENGINE=MyISAM AUTO_INCREMENT=1838561 DEFAULT CHARSET=utf8 |
+--------+----------------------------------------------------------------------
-----------------------------------------------------+
1 row in set (0.08 sec)还有上面的
mysql> use test;
Database changed
mysql> show create table player;
+--------+----------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-----------------------------------------------------+
| Table | Create Table
|
+--------+----------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-----------------------------------------------------+
| player | CREATE TABLE `player` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL DEFAULT '',
`account_id` int(11) NOT NULL DEFAULT '0',
`account_name` varchar(50) NOT NULL DEFAULT '',
PRIMARY KEY (`Id`)
) ENGINE=MyISAM AUTO_INCREMENT=1838561 DEFAULT CHARSET=utf8 |
+--------+----------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-----------------------------------------------------+
1 row in set (0.08 sec)mysql> show full columns from player;
+--------------+-------------+-----------------+------+-----+---------+---------
-------+---------------------------------+---------+
| Field | Type | Collation | Null | Key | Default | Extra
| Privileges | Comment |
+--------------+-------------+-----------------+------+-----+---------+---------
-------+---------------------------------+---------+
| Id | int(11) | NULL | NO | PRI | NULL | auto_inc
rement | select,insert,update,references | |
| name | varchar(50) | utf8_general_ci | NO | | |
| select,insert,update,references | |
| account_id | int(11) | NULL | NO | | 0 |
| select,insert,update,references | |
| account_name | varchar(50) | utf8_general_ci | NO | | |
| select,insert,update,references | |
+--------------+-------------+-----------------+------+-----+---------+---------
-------+---------------------------------+---------+
4 rows in set (0.03 sec)
set names 'gbk';
insert into player (name) values ('楼主');
select * from player where ....看一下你的结果是否正常,如果正常,则说明之前插入到表中的记录中的编码不对。需要人工修正。
的确是这个问题,可以正常显示,但是要怎么修改呢?我把 player.sql文件中的 DEFAULT CHARSET=utf8 改成 gbk 后输出没有问题,但为什么utf8就不行呢?
DROP TABLE IF EXISTS `player`;
CREATE TABLE `player` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL DEFAULT '',
`account_id` int(11) NOT NULL DEFAULT '0',
`account_name` varchar(50) NOT NULL DEFAULT '',
PRIMARY KEY (`Id`)
) ENGINE=MyISAM AUTO_INCREMENT=1838561 DEFAULT CHARSET=utf8;#
# Dumping data for table player
#INSERT INTO `player` VALUES (100001,'游客100001',100001,'guest100001');
INSERT INTO `player` VALUES (100012,'游客100012',100012,'guest100012');
INSERT INTO `player` VALUES (100016,'游客100016',100016,'guest100016');