D:mysql5>.binmysqld-max-nt.exe --console
061106 20:35:21 InnoDB: Started; log sequence number 0 43655
061106 20:35:22 [Note] .binmysqld-max-nt.exe: ready for connections.
Version: '5.0.18-nt-max' socket: '' port: 3306 MySQL Community Edition (GPL)
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
C:Documents and SettingsAdministrator>cd d:mysql5bin
C:Documents and SettingsAdministrator>d:
D:mysql5bin>mysql -uroot
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 1 to server version: 5.0.18-nt-max
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
mysql> use test
Database changed
mysql> SHOW VARIABLES LIKE 'character_set%';
+--------------------------+---------------------------+
| Variable_name | Value |
+--------------------------+---------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | D:mysql5sharecharsets |
+--------------------------+---------------------------+
7 rows in set (0.00 sec)
mysql> create table ad(name varchar(32));
Query OK, 0 rows affected (0.10 sec)
mysql> insert into ad values('汉字');
Query OK, 1 row affected (0.00 sec)
mysql> select * from ad;
+------+
| name |
+------+
| 汉字 |
+------+
1 row in set (0.00 sec)
mysql>
此时,插入、显示字段的汉字值都正确。
但是如果服务器启动的时候指定了字符集参数,或者配置文件里面包含字符集参数
情况就不同了
my.ini
[mysqld]
default-character-set=gbk
D:mysql5>.binmysqld-max-nt.exe --defaults-file=my.ini --ansi --console
InnoDB: Error: log file .ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 8388608 bytes!
061106 21:31:06 [Note] .binmysqld-max-nt.exe: ready for connections.
Version: '5.0.18-nt-max' socket: '' port: 3306 MySQL Community Edition (GPL)
061106 21:37:46 [Note] .binmysqld-max-nt.exe: Normal shutdown
061106 21:37:48 [Note] .binmysqld-max-nt.exe: Shutdown complete
D:mysql5>binmysqld-max-nt.exe --character_set_server=gbk --console
InnoDB: Error: log file .ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 8388608 bytes!
061106 21:39:55 [Note] binmysqld-max-nt.exe: ready for connections.
Version: '5.0.18-nt-max' socket: '' port: 3306 MySQL Community Edition (GPL)
此时,显示过去未指定字符集时建立的表并插入汉字的字段,显示是正常的
D:mysql5bin>mysql -uroot
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 1 to server version: 5.0.18-nt-max
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
mysql> use test
Database changed
mysql> select * from ad;
+------+
| name |
+------+
| 汉字 |
+------+
1 row in set (0.00 sec)
mysql> SHOW VARIABLES LIKE 'character_set%';
+--------------------------+---------------------------+
| Variable_name | Value |
+--------------------------+---------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | gbk |
| character_set_results | latin1 |
| character_set_server | gbk |
| character_set_system | utf8 |
| character_sets_dir | D:mysql5sharecharsets |
+--------------------------+---------------------------+
7 rows in set (0.00 sec)
这个时候建立的表并插入汉字的字段,不能正确显示
mysql> create table ad2(name varchar(32));
Query OK, 0 rows affected (0.06 sec)
mysql> insert into ad2 values('汉字');
Query OK, 1 row affected, 1 warning (0.01 sec)
mysql> select * from ad2;
+------+
| name |
+------+
| ??? |
+------+
1 row in set (0.01 sec)
如果只在客户端设定character_set_results参数,那么不管服务器端是什么字符集时建立、插入汉字的表都显示不正确
mysql> set character_set_results='gbk';
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW VARIABLES LIKE 'character_set%';
+--------------------------+---------------------------+
| Variable_name | Value |
+--------------------------+---------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | gbk |
| character_set_results | gbk |
| character_set_server | gbk |
| character_set_system | utf8 |
| character_sets_dir | D:mysql5sharecharsets |
+--------------------------+---------------------------+
7 rows in set (0.00 sec)
mysql> select * from ad2;
+-------+
| name |
+-------+
| ??×? |
+-------+
1 row in set (0.00 sec)
mysql> select * from ad;
+-------+
| name |
+-------+
| ??×? |
+-------+
1 row in set (0.00 sec)
如果再设定character_set_client,效果和只设定character_set_results没有什么差别
mysql> set character_set_client='gbk';
Query OK, 0 rows affected (0.00 sec)
mysql> select * from ad;
+-------+
| name |
+-------+
| ??×? |
+-------+
1 row in set (0.00 sec)
mysql> select * from ad2;
+-------+
| name |
+-------+
| ??×? |
+-------+
1 row in set (0.00 sec)
mysql> create table ad3(name varchar(32));
Query OK, 0 rows affected (0.05 sec)
mysql> insert into ad3 values('汉字');
Query OK, 1 row affected (0.00 sec)
mysql> select * from ad3;
+------+
| name |
+------+
| ?? |
+------+
1 row in set (0.01 sec)
mysql> SHOW VARIABLES LIKE 'character_set%';
+--------------------------+---------------------------+
| Variable_name | Value |
+--------------------------+---------------------------+
| character_set_client | gbk |
| character_set_connection | latin1 |
| character_set_database | gbk |
| character_set_results | gbk |
| character_set_server | gbk |
| character_set_system | utf8 |
| character_sets_dir | D:mysql5sharecharsets |
+--------------------------+---------------------------+
7 rows in set (0.00 sec)
如果再设定character_set_connection,不影响已经建立和插入的表,但是新建立、插入汉字的表就能正确显示
mysql> set character_set_connection='gbk';
Query OK, 0 rows affected (0.00 sec)
mysql> select * from ad3;
+------+
| name |
+------+
| ?? |
+------+
1 row in set (0.00 sec)
mysql> select * from ad2;
+-------+
| name |
+-------+
| ??×? |
+-------+
1 row in set (0.00 sec)
mysql> select * from ad;
+-------+
| name |
+-------+
| ??×? |
+-------+
1 row in set (0.00 sec)
我们可以查看各个表的字符集
mysql> show create table ad;
+-------+----------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+----------------------------------------------------------------------------------------------+
| ad | CREATE TABLE `ad` (
`name` varchar(32) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
+-------+----------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> show create table ad2;
+-------+--------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+--------------------------------------------------------------------------------------------+
| ad2 | CREATE TABLE `ad2` (
`name` varchar(32) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=gbk |
+-------+--------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> show create table ad3;
+-------+--------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+--------------------------------------------------------------------------------------------+
| ad3 | CREATE TABLE `ad3` (
`name` varchar(32) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=gbk |
+-------+--------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
此时新建的表、此时插入汉字,显示就正确了
mysql> set character_set_client=gbk;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_connection=gbk;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_results=gbk;
Query OK, 0 rows affected (0.00 sec)
mysql> create table ad4(name varchar(32));
Query OK, 0 rows affected (0.06 sec)
mysql> insert into ad4 values('汉字');
Query OK, 1 row affected (0.00 sec)
mysql> select * from ad;
+-------+
| name |
+-------+
| ??×? |
+-------+
1 row in set (0.00 sec)
mysql> select * from ad4;
+------+
| name |
+------+
| 汉字 |
+------+
1 row in set (0.00 sec)
mysql> create table ad5(name varchar(32)) DEFAULT CHARSET=gbk;
Query OK, 0 rows affected (0.10 sec)
mysql> insert into ad5 values('汉字');
Query OK, 1 row affected (0.00 sec)
mysql> select * from ad5;
+------+
| name |
+------+
| 汉字 |
+------+
1 row in set (0.00 sec)
mysql> select * from ad4;
+------+
| name |
+------+
| 汉字 |
+------+
1 row in set (0.00 sec)
mysql> show create table ad4;
+-------+--------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+--------------------------------------------------------------------------------------------+
| ad4 | CREATE TABLE `ad4` (
`name` varchar(32) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=gbk |
+-------+--------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> show create table ad5;
+-------+--------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+--------------------------------------------------------------------------------------------+
| ad5 | CREATE TABLE `ad5` (
`name` varchar(32) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=gbk |
+-------+--------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> show create table ad3;
+-------+--------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+--------------------------------------------------------------------------------------------+
| ad3 | CREATE TABLE `ad3` (
`name` varchar(32) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=gbk |
+-------+--------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> exit
Bye
分享到:
相关推荐
总之,解决MySQL中的汉字乱码问题需要从多个层面进行检查和调整,确保字符集在整个数据处理链路中的一致性。理解字符集和编码的概念,以及它们在MySQL中的应用,对于避免和解决这类问题至关重要。
2. **确保客户端与服务器的字符集匹配**:确保你的应用程序(如PHP脚本或MySQL客户端工具)在连接数据库时指定正确的字符集,例如在PHP中可以使用`mysql_set_charset('utf8')`,或者在命令行中使用`--default-...
在连接字符串中,添加`charset=utf8`或者`charset=utf8mb4`参数,告诉MySQL客户端使用哪种字符集。如下所示: ```csharp string connectionString = "server=localhost;user=root;database=mydb;port=3306;password...
假设我们需要解决一个使用GB2312编码的客户端向使用GBK编码的MySQL服务器发送数据时出现的乱码问题。 1. **检查服务器端字符集设置** - 登录MySQL服务器,执行: ```sql SHOW VARIABLES LIKE 'character%'; ```...
标题提及的"7、命令行客户端出现乱码的解决方案1",指的是在使用命令行工具(如Windows的cmd或Linux的Terminal)连接MySQL数据库时,由于字符编码不匹配导致显示的乱码现象。这种问题通常发生在输入或输出含有非...
针对“mysql客户端插入中文内容后再查询却返回乱码”等问题,解决策略通常包括: - 确保客户端和服务器端的字符集一致; - 使用正确的字符集进行数据导入和导出; - 在连接数据库时明确指定字符集; - 更新数据库表...
### Express 中文乱码解决方法 在Web开发中,尤其是使用Node.js的Express框架进行后端开发时,处理中文字符可能会遇到乱码问题。这通常是因为客户端与服务器之间的编码设置不一致导致的。本文将详细介绍如何在...
解决这个问题需要对MySQL的配置、数据表创建以及客户端连接进行相应的调整。以下是一份详细的步骤指南: 1. **确认MySQL版本**: 首先,确保你的MySQL服务器版本是5.1.55或更高。不同版本的MySQL可能对字符集的...
通过以上步骤,可以有效地解决MySQL中的中文乱码问题,确保数据的正确读取和显示。然而,值得注意的是,一旦数据库中已有数据,更改字符集可能需要额外的转换步骤,这可能会导致数据丢失或损坏,因此在执行任何变更...
以下是一些关键知识点,帮助你理解和解决MySQL中文乱码问题。 1. **字符集与编码** - **字符集(Character Set)**:指的是字符的集合,如ASCII、GBK、UTF-8等,它定义了可以表示哪些字符。 - **编码(Collation...
润乾报表乱码问题尤其令人头疼,因为它影响了数据的显示和传输,尤其是对于汉字而言,乱码使得数据几乎无法阅读和使用。 首先,报表乱码问题分为多种类型,包括页面显示乱码、导出文件乱码和参数乱码。页面显示乱码...
总之,解决MySQL中文乱码问题的关键在于确保所有层次的字符集设置保持一致,特别是客户端、服务器、数据库和表。通过正确配置和理解这些字符集,可以有效地避免"Illegal mix of collations for operation"的错误,...
在使用MySQL数据库时,有时会遇到中文数据插入后出现乱码的问题,这通常是由于字符集配置不正确导致的。在Windows环境下,通过CMD命令行窗口操作数据库时,也可能出现中文显示乱码的情况。本文将详细解释这个问题的...
此外,解决汉字乱码问题还需要注意如下几点心得: - 对于不同版本的Java,它们的默认编码可能不同,需要根据实际的Java版本进行相应的编码设置。 - 在进行国际化软件开发时,应该避免在系统中使用默认编码,而应该...
1. MySQL服务器和客户端的字符集设置:`character_set_server`和`character_set_client`分别代表服务器和客户端的默认字符集。如果不一致,数据在传输过程中可能会出现编码转换问题。 2. 数据库、表和列的字符集:...
总之,解决MySQL `LONGBLOB`字段插入数据问题的关键在于理解和调整`max_allowed_packet`配置,同时注意客户端和服务器端都需要进行相应的设置。通过以上步骤,可以有效地解决因数据包过大而引发的插入异常。
综上所述,解决PHP写入MySQL中文乱码问题需要多方面配合,包括源文件编码、数据库连接设置、数据库和表的字符集,以及SQL语句前的设置。只有当这些环节都保持一致,才能确保中文数据正确无误地写入和读取。在实际...
2. 通用策略:确保服务器、客户端(浏览器)、数据库等所有环节的字符编码一致,避免在数据传输过程中出现乱码。 总结,处理中文乱码问题的关键在于理解编码和解码的过程,以及在各个层次(如服务器、浏览器、...