www.hothosting.info
Free3.org |
Club.HosteGuide.com
previous pause next Hoster Highlights:
ninews2 - Home
首 页 业界新闻促销与打折信息选购指南主机评论主机课堂顶级主机商专区模板下载交流论坛

  当前位置:首页 » 主机课堂 » 应用经验 » 详细

收藏本站  
主机分类推荐
 
网站工具
  1. 主机性能报告
  2. 网站信息查询
  3. 网络服务商客户增减报告
  4. 网页排名查询
  5. WHOIS 查询
  6. IP地址查询
  7. 免费IP签名
HosteGuide
 

解决 MYSQL 的乱码问题

  看到很多有关 MYSQL 乱码问题的帖子,笔者也在使用 MYSQL 的过程中遇到过,在网上看到各位高手的意见,受益菲浅,但是,有时候总是碰不到自己想要的解答,下面是我自己安装使用过程中碰到的问题,记录下来与大家一起分享。
  我刚一开始安装 MYSQL 的时候还不知道字符集的问题,想当然的以为没有问题,因为笔者原来的用 MSSQL 的时候就没有遇到过这些问题,然后,笔者使用 VB6 为单位开发了一个小的 MIS 系统,都是用的缺省的字符集,程序 INSERT、SELECT 在界面显示中文都很正常,在调试的过程中用的是 MYSQL 自己带的 COMMAND LINE CLIENT,在这里面插入中文,显示都很正常。后来在用其他的软件(例如 MYSQL 自己带的 QUERY BROWSER)查询表中内容的时候是乱码,当时弄得我一头雾水,不知道怎么回事,翻阅 MYSQL 使用文档,才知道当时缺省安装的字符集合 latin1_swedish_ci,我在输入和输出的时候字符显示集合是一致的,在数据库表中的字符集是 latin1_swedish_ci,我不论是在 COMMAND LINE CLIENT,还是在程序中,输入汉字都不会发生问题,直到现在我也不明白。
  再后来,听说数据的字符集最好设置成 UTF8 的,那样就能支持多语言,我一时兴趣,安装了一个 UTF8 默认字符集的 MYSQL 5.0,满怀信心的认为从 COMMAND LINE CLIENT 中输入汉字应该没有问题,因为表都是 UFT8 的了,可是 INSERT 的时候还是报 data too long 的错误,到网上查询了半天,明白了 MySQL 的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式(Collation)。对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。


查看系统的字符集和排序方式的设定可以通过下面的两条命令:

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 | latin1 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
7 rows in set (0.00 sec)

mysql> SHOW VARIABLES LIKE 'collation_%';
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)


上面列出的值就是系统的默认值。我用 SHOW VARCHARARES LIKE 'char%' 看,发现都是 UTF8 格式,这就纳闷了,怎么不行呢,难道是 CMD 自己本身的字符集有问题?查看了一下,发现 cmd.exe 自身的编码是 GBK,就用 SET NAMES 'gbk',这样一试,果然成功了。

SET NAMES 'gbk';

它相当于下面的三句指令:
SET character_set_client = gbk;
SET character_set_results = gbk;
SET character_set_connection = gbk;

 

 最后总结一下:
 1) 库、表缺省的字符集都是一致的,一般使用多字节时采用 UTF8,这样就不会丢失信息,而且有利于国际化。
 2) 连接的时候,要和应用程序本身系统采用的字符集一致,这样就能正确插入和显示数据,不用管数据库中存什么字符。

上一篇:域名后缀国别解释大全(实时更新)
下一篇:没有了
相关文章
  1. 解决 MYSQL 的乱码问题
  2. 域名后缀国别解释大全(实时更新)
  3. 简单几步,零成本来反击竞争对手的询价
  4. Yahoo Gmail Hotmail等主流邮件系统查
  5. 查询本机ip地址的方法大全(图解)
  6. 获得最理想的域名的方法大全
  7. 通过Whois查询合作伙伴的真实企业信息
您的观点
最新评论:
我们欢迎您对这篇文章进行评论,需审核,请自觉遵守互联网相关政策法规。 
发表评论:
评论内容
少于250字
用户名:    密码:
  匿名? 
注册 

IXWebHosting 4.95美金
2-16个独立IP地址,300G-无限存储空间,1-3个免费域名,Linux/Windows主机可选 仅4.95美金/月

 

国际域名注册仅 1.99美金
全球排名第一的Godaddy促销,购买任何非主机产品可用1.99美金/年 注册国际域名

 

StartLogic 抢客户特价
将网站转入StartLogic,可获得4.95美金/月的特价(原价5.95美金/月)

 
 
友情链接