本方主要参考以下几个文章整理的,以便于自己记录用;
其实,本人在xp下安装了mysql,其中在安装的时候,我都设置成了utf8的字符集;而且在建立数据库的时候,也是一样,但是问题就是:我在dos里面中文显示的都是乱码。后来查询知道了是什么回事。
第一:我们在服务器中建立数据库、表、字段的时候,基本都是默认的字符集,一般是utf8;
第二:用户在用户端登陆服务器时,可能用户端设备本身是gbk的字符集,这时候,就会出现匹配问题:
告诉MySQL服务器, 客户端的编码集
在传输给MySQL服务器的时候的编码集
以及期望MySQL返回的结果的编码集
通过使用”set names gbk″, 相当于改变以上三个变量了,就告诉服务器, 我用的是gbk编码, 我希望你也给我返回gbk编码的查询结果.MySQL中关于连接环境的字符集设置有 Client端,connection, results 通过这些参数,MySQL就知道你的客户端工具用的是什么字符集,结果集应该是什么字符集。这样MySQL就会做必要的翻译
mysql环境下:
mysql> show variables like 'character_set%';
+--------------------------+----------------------------------------+
| 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 | /usr/local/mysql/share/mysql/charsets/ |
+--------------------------+----------------------------------------+
mysql> show variables like 'collation%';
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+
1. 数据库表中字段的字符集设置。show create table TableName或 show full columns from tableName
mysql> show create table t1;+-------+------------------------------------
| Table | Create Table
+-------+------------------------------------
| t1 | CREATE TABLE `t1` (
`id` int(11) NOT NULL,
`c1` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk |
+-------+------------------------------------
1 row in set (0.00 sec)
mysql> show full columns from t1;+-------+-------------+----------------+------+-----+-
| Field | Type | Collation | Null | Key |
+-------+-------------+----------------+------+-----+-
| id | int(11) | NULL | NO | PRI |
| c1 | varchar(30) | gbk_chinese_ci | YES | |
+-------+-------------+----------------+------+-----+-
2 rows in set (0.00 sec)
mysql>
2. 当前联接系统参数 show variables like 'char%'
mysql> show variables like 'char%';+--------------------------+----------------
| Variable_name | Value
+--------------------------+----------------
| character_set_client | gbk
| character_set_connection | gbk
| character_set_database | latin1
| character_set_filesystem | binary
| character_set_results | gbk
| character_set_server | latin1
| character_set_system | utf8
| character_sets_dir | C:/Program File
+--------------------------+----------------
8 rows in set (0.00 sec)
mysql>
1. 中文,请确保 表中该字段的字符集为中文兼容:
big5 | Big5 Traditional Chinese
gb2312 | GB2312 Simplified Chinese
gbk | GBK Simplified Chinese
utf8 | UTF-8 Unicode
2. 确保,联接参数与这个字段字符集一致,你可以用 set name 'charsetname';
比如, set name 'gbk'; 这条命令会同时修改 character_set_client,character_set_connection,character_set_results
(如果你的这架MySQL中都为中文,则你可以在my.ini或my.cnf中加上或修改这个参数, 参数文件修改后需重启MySQL服务)
[mysql]
default-character-set=gbk
此处参考文章为:http://gc063tzf.blog.163.com/blog/static/1121629220103254254178/
今天打开DOS窗口,想用MYsql,但是输入时有中文的,所以就切换输入法, ctrl+space组合键无论怎么也不管用。想到是不是自己电脑系统里或者什么地方有问题了,就到网上去搜索了半天,把问题给解决了,总结了一下方法:
1.看看c:windows\system32文件夹下conime.exe文件存不存在,如果有,就关掉所有命令提示符窗口,然后复制下面的命令到开始运行里执行:
reg add "HKEY_CURRENT_USER\Console" /v "LoadConIme" /d 1 /t REG_DWORD /f
我的会出现一个设置成功的界面一闪而过,这样就ok了
2.用鼠标单击屏幕右下角输入法切换那里,选择智能ABC,嘿,居然在DOS下能输入汉字.
3. PHP 乱码, 同样 mysql_query("set name 'gbk'"); 其它API也类似。
4. phpmyadmin里乱码
phpMyAdmin的config.inc.php中有没有设置$cfg['DefaultCharset']='utf-8';
5. Windows操作系统中命令行("DOS"窗口)下。
在你的DOS窗中的左上角标题栏片左键,属性,
在字体中,选择“宋体”,确认
mysql中 set names 'gbk';