征集MySQL 乱码现象 想整理一篇中文乱码的贴子。希望能从各位得到一些对各种乱码症状的补充。比如 mysql windows中DOS下中文乱码,php中GBK显示乱码等现象。http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx提供症状即可,如同时有解决方法更佳。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 学习一下..其实我觉得MySQL的乱码问题来来去去也是那么两三个原因.. 可以看看我提供的 mysql 命令行下 显示 中文字符 问题:http://topic.csdn.net/u/20090512/16/1f8c65cf-e2fc-4a9f-b95e-950de5871dde.htmlMysql 默认字符设置为 gbk 在Mysql query browser 可以正确 显示 中文。但是命令行下: mysql> status -------------- C:\Program Files\MySQL\MySQL Server 5.1\bin\mysql.exe Ver 14.14 Distrib 5.1.30, for Win32 (ia32) Connection id: 1 Current database: test Current user: root@localhost SSL: Not in use Using delimiter: ; Server version: 5.1.30-community MySQL Community Server (GPL) Protocol version: 10 Connection: localhost via TCP/IP Server characterset: gbk Db characterset: gbk Client characterset: gbk Conn. characterset: gbk TCP port: 3306 Uptime: 22 min 39 sec Threads: 1 Questions: 6 Slow queries: 0 Opens: 15 Flush tables: 1 Open tabl es: 8 Queries per second avg: 0.4 -------------- mysql> select * from Course; +-----+--------------+------+---------+ | Cno | Cname | Cpno | Ccredit | +-----+--------------+------+---------+ | 1 | | 7 | 4 | | 2 | | NULL | 2 | | 3 | | 1 | 4 | | 4 | | 6 | 3 | | 5 | | 7 | 4 | | 6 | Java | NULL | 2 | | 7 | | 6 | 4 | +-----+--------------+------+---------+ 7 rows in set (0.55 sec) 不能 显示 中文。正确的应该为: Cno | Cname | Cpno | Ccredit | +-----+--------------+------+---------+ | 1 | 数据库系统 | 5 | 4 | | 2 | 高等数续 | NULL | 2 | | 3 | 信息系统 | 1 | 4 | | 4 | 操作系统 | 6 | 3 | | 5 | 数据结构 | 7 | 4 | | 6 | Java程序设计 | NULL | 2 | | 7 | 编译原理 | 6 | 4 | mysql> show full columns from Course; +---------+--------------+----------------+------+-----+---------+-------+------ ---------------------------+---------+ | Field | Type | Collation | Null | Key | Default | Extra | Privi leges | Comment | +---------+--------------+----------------+------+-----+---------+-------+------ ---------------------------+---------+ | Cno | varchar(10) | gbk_chinese_ci | NO | PRI | NULL | | selec t,insert,update,references | | | Cname | varchar(50) | gbk_chinese_ci | YES | | NULL | | selec t,insert,update,references | | | Cpno | varchar(10) | gbk_chinese_ci | YES | MUL | NULL | | selec t,insert,update,references | | | Ccredit | smallint(10) | NULL | YES | | NULL | | selec t,insert,update,references | | +---------+--------------+----------------+------+-----+---------+-------+------ ---------------------------+---------+mysql> set names 'latin1'; mysql> select * from Course; +-----+----------+------+---------+ | Cno | Cname | Cpno | Ccredit | +-----+----------+------+---------+ | 1 | ???? | 7 | 4 | | 2 | ???? | NULL | 2 | | 3 | ???? | 1 | 4 | | 4 | ???? | 6 | 3 | | 5 | ????? | 7 | 4 | | 6 | Java???? | NULL | 2 | | 7 | ???? | 6 | 4 | +-----+----------+------+---------+ 7 rows in set (0.20 sec) mysql> show full columns from Course; +---------+--------------+----------------+------+-----+---------+-------+------ ---------------------------+---------+ | Field | Type | Collation | Null | Key | Default | Extra | Privi leges | Comment | +---------+--------------+----------------+------+-----+---------+-------+------ ---------------------------+---------+ | Cno | varchar(10) | gbk_chinese_ci | NO | PRI | NULL | | selec t,insert,update,references | | | Cname | varchar(50) | gbk_chinese_ci | YES | | NULL | | selec t,insert,update,references | | | Cpno | varchar(10) | gbk_chinese_ci | YES | MUL | NULL | | selec t,insert,update,references | | | Ccredit | smallint(10) | NULL | YES | | NULL | | selec t,insert,update,references | | +---------+--------------+----------------+------+-----+---------+-------+------ ---------------------------+---------+ 4 rows in set (0.11 sec) mysql> show variables like 'char%'; +--------------------------+---------------------------------------------------- -----+ | Variable_name | Value | +--------------------------+---------------------------------------------------- -----+ | character_set_client | gbk | | character_set_connection | gbk | | character_set_database | gbk | | character_set_filesystem | binary | | character_set_results | gbk | | character_set_server | gbk | | character_set_system | utf8 | | character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.1\share\chars ets\ | +--------------------------+---------------------------------------------------- -----+ 8 rows in set (0.08 sec) 当前代码页 是936 (ANSI/OEM - 简体中文 GBK) 期待解决。 在安装MYAQL 时选着GB2132编码,同时把控制台的选项也选上就可以了,有时候也是很怪,前几天做的一个,一开始不行,重装几次突然就好了 Uinx 下的乱码怎么解决呢? 将mysql设置为utf-8的,然后通过jdbc往里面写gb2312的,在mysql里看就是乱码 将mysql设置为utf-8使用数据库时候使用,phpmyadmin,好用多了! 好好看一下文档, 就不会有这困扰了.90%是连接(客户端)字符集设置错的原因,所谓连接字符集,就是告诉mysql, 你的应用环境是什么编码, mysql自动将服务端的编码转换成客户端编码.所以大家不要去考虑服务端到底什么编码, 什么default、server、db、column 字符集统统不要去管它。除非是latin1字符集.你要做的,是确认,你应用环境的编码是什么环境,所谓的应用环境,就是你开发语言或者是接口软件,如果无法确认,无非就几种 gbk, ucs2,UTF8依次set names xxx, 碰到那个是,就OK了。 加入一句话 request.getEnconding("GB2312"); 用jsp提交数据到数据库,连接数据库没加useUnicode=true&setcharacterEncoding=gb2312;数据库显示信息会出现乱码; $conn = mysql_connect("192.168.1.133", "root", "123456") or die("Could not connect: " . mysql_error()); $program_char = "utf8"; $conn.mysql_select_db("test"); //$conn.mysql_query('SET @@character_set_results = "'.$program_char.'"'); mysql_set_charset($program_char,$conn); $charset = mysql_client_encoding($conn); printf ("current character set is %s <br>", $charset); $result = mysql_query("SELECT id, task_no,pack_path FROM tb_workplan where id = 1 ",$conn); while ($row = mysql_fetch_array($result, MYSQL_BOTH)) { printf ("ID: %s <br> task_no: %s <br> pack_path :%s <BR>", $row["id"], $row[1], $row["pack_path"]); } $conn.mysql_free_result($result); $conn.mysql_close();楼主以上是一段 5.2 PHP版本以上解决乱码问题的PHP Code注意:mysql_set_charset($program_char,$conn); 我也想整理一番,一直没时间。用不用咱们两个谱写一个PDF文档供大家参考? powerbuilder 调用时乱码,不知道怎么解决 数据库类型mysql,字符集utf8。我在CMD里面使用的时候,set names utf8,但是中文还是乱码了,但是我使用的是set names gbk的时候,中文是正常显示的。网页编码gb2312,数据库编码utf8,查询的时候set names gbk,得到的输出中文也是正常的,没有乱码。 libmysqlclient.so.16: cannot open shared object file 请教大牛一个mysql cluster 的问题。 一个排序的问题 FreeBSD下面安装mysql问题***急在线等。 谁有MySql嵌入式版本的源码呀? 表死了怎么办...... 如何用source同时运行多个脚本sql文件 mysql中如何改变数据库的编码格式,默认是latin1。 求一个mysql的sql计算语句 请教mysql的命令长度限制 对两个时间段同时查询 mysql正则选出 符合如下条件记录的,怎么写SQL? 选出规则为如下的
Mysql 默认字符设置为 gbk
在Mysql query browser 可以正确 显示 中文。但是命令行下:
mysql> status
--------------
C:\Program Files\MySQL\MySQL Server 5.1\bin\mysql.exe Ver 14.14 Distrib 5.1.30,
for Win32 (ia32) Connection id: 1
Current database: test
Current user: root@localhost
SSL: Not in use
Using delimiter: ;
Server version: 5.1.30-community MySQL Community Server (GPL)
Protocol version: 10
Connection: localhost via TCP/IP
Server characterset: gbk
Db characterset: gbk
Client characterset: gbk
Conn. characterset: gbk
TCP port: 3306
Uptime: 22 min 39 sec Threads: 1 Questions: 6 Slow queries: 0 Opens: 15 Flush tables: 1 Open tabl
es: 8 Queries per second avg: 0.4
-------------- mysql> select * from Course;
+-----+--------------+------+---------+
| Cno | Cname | Cpno | Ccredit |
+-----+--------------+------+---------+
| 1 | | 7 | 4 |
| 2 | | NULL | 2 |
| 3 | | 1 | 4 |
| 4 | | 6 | 3 |
| 5 | | 7 | 4 |
| 6 | Java | NULL | 2 |
| 7 | | 6 | 4 |
+-----+--------------+------+---------+
7 rows in set (0.55 sec)
不能 显示 中文。正确的应该为:
Cno | Cname | Cpno | Ccredit |
+-----+--------------+------+---------+
| 1 | 数据库系统 | 5 | 4 |
| 2 | 高等数续 | NULL | 2 |
| 3 | 信息系统 | 1 | 4 |
| 4 | 操作系统 | 6 | 3 |
| 5 | 数据结构 | 7 | 4 |
| 6 | Java程序设计 | NULL | 2 |
| 7 | 编译原理 | 6 | 4 |
mysql> show full columns from Course;
+---------+--------------+----------------+------+-----+---------+-------+------
---------------------------+---------+
| Field | Type | Collation | Null | Key | Default | Extra | Privi
leges | Comment |
+---------+--------------+----------------+------+-----+---------+-------+------
---------------------------+---------+
| Cno | varchar(10) | gbk_chinese_ci | NO | PRI | NULL | | selec
t,insert,update,references | |
| Cname | varchar(50) | gbk_chinese_ci | YES | | NULL | | selec
t,insert,update,references | |
| Cpno | varchar(10) | gbk_chinese_ci | YES | MUL | NULL | | selec
t,insert,update,references | |
| Ccredit | smallint(10) | NULL | YES | | NULL | | selec
t,insert,update,references | |
+---------+--------------+----------------+------+-----+---------+-------+------
---------------------------+---------+mysql> set names 'latin1';
mysql> select * from Course;
+-----+----------+------+---------+
| Cno | Cname | Cpno | Ccredit |
+-----+----------+------+---------+
| 1 | ???? | 7 | 4 |
| 2 | ???? | NULL | 2 |
| 3 | ???? | 1 | 4 |
| 4 | ???? | 6 | 3 |
| 5 | ????? | 7 | 4 |
| 6 | Java???? | NULL | 2 |
| 7 | ???? | 6 | 4 |
+-----+----------+------+---------+
7 rows in set (0.20 sec) mysql> show full columns from Course;
+---------+--------------+----------------+------+-----+---------+-------+------
---------------------------+---------+
| Field | Type | Collation | Null | Key | Default | Extra | Privi
leges | Comment |
+---------+--------------+----------------+------+-----+---------+-------+------
---------------------------+---------+
| Cno | varchar(10) | gbk_chinese_ci | NO | PRI | NULL | | selec
t,insert,update,references | |
| Cname | varchar(50) | gbk_chinese_ci | YES | | NULL | | selec
t,insert,update,references | |
| Cpno | varchar(10) | gbk_chinese_ci | YES | MUL | NULL | | selec
t,insert,update,references | |
| Ccredit | smallint(10) | NULL | YES | | NULL | | selec
t,insert,update,references | |
+---------+--------------+----------------+------+-----+---------+-------+------
---------------------------+---------+
4 rows in set (0.11 sec) mysql> show variables like 'char%';
+--------------------------+----------------------------------------------------
-----+
| Variable_name | Value
|
+--------------------------+----------------------------------------------------
-----+
| character_set_client | gbk
|
| character_set_connection | gbk
|
| character_set_database | gbk
|
| character_set_filesystem | binary
|
| character_set_results | gbk
|
| character_set_server | gbk
|
| character_set_system | utf8
|
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.1\share\chars
ets\ |
+--------------------------+----------------------------------------------------
-----+
8 rows in set (0.08 sec) 当前代码页 是936 (ANSI/OEM - 简体中文 GBK)
期待解决。
使用数据库时候使用,phpmyadmin,好用多了!
所谓连接字符集,就是告诉mysql, 你的应用环境是什么编码, mysql自动将服务端的编码转换成客户端编码.所以大家不要去考虑服务端到底什么编码, 什么default、server、db、column 字符集统统不要去管它。除非是latin1字符集.你要做的,是确认,你应用环境的编码是什么环境,所谓的应用环境,就是你开发语言或者是接口软件,如果无法确认,无非就几种 gbk, ucs2,UTF8
依次set names xxx, 碰到那个是,就OK了。
$conn = mysql_connect("192.168.1.133", "root", "123456") or
die("Could not connect: " . mysql_error()); $program_char = "utf8"; $conn.mysql_select_db("test");
//$conn.mysql_query('SET @@character_set_results = "'.$program_char.'"');
mysql_set_charset($program_char,$conn);
$charset = mysql_client_encoding($conn);
printf ("current character set is %s <br>", $charset);
$result = mysql_query("SELECT id, task_no,pack_path FROM tb_workplan where id = 1 ",$conn);
while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
printf ("ID: %s <br> task_no: %s <br> pack_path :%s <BR>", $row["id"], $row[1], $row["pack_path"]);
}
$conn.mysql_free_result($result);
$conn.mysql_close();楼主以上是一段 5.2 PHP版本以上解决乱码问题的PHP Code
注意:mysql_set_charset($program_char,$conn);
我在CMD里面使用的时候,set names utf8,但是中文还是乱码了,但是我使用的是set names gbk的时候,中文是正常显示的。
网页编码gb2312,数据库编码utf8,查询的时候set names gbk,得到的输出中文也是正常的,没有乱码。