mysql中的字符集问题

本方主要参考以下几个文章整理的,以便于自己记录用;


        其实,本人在xp下安装了mysql,其中在安装的时候,我都设置成了utf8的字符集;而且在建立数据库的时候,也是一样,但是问题就是:我在dos里面中文显示的都是乱码。后来查询知道了是什么回事。

        第一:我们在服务器中建立数据库、表、字段的时候,基本都是默认的字符集,一般是utf8;

        第二:用户在用户端登陆服务器时,可能用户端设备本身是gbk的字符集,这时候,就会出现匹配问题:

                   通过  character_set_client       告诉MySQL服务器, 客户端的编码集

                             character_set_connection       在传输给MySQL服务器的时候的编码集

                             character_set_results      以及期望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 | 
+----------------------+-----------------+          

下文参考:http://blog.csdn.net/ACMAIN_CHM/article/details/4174186


1. 数据库表中字段的字符集设置show create table TableNameshow 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';

 


                 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值