Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 冲浪宝典 > 网络资源 > MYSQL字符集与中文的问题的详细说明
【标  题】:MYSQL字符集与中文的问题的详细说明
【关键字】:MYSQL
【来  源】:http://www.cublog.cn/u/12631/showart.php?id=167560

MYSQL字符集与中文的问题的详细说明

Your Ad Here

字符集与中文的问题的详细说明

论坛中有不少帖子是关于字符集与中文的问题,仔细看了下,讲解的都不甚详细,本人学习MySQL亦仅数日,在此将本人看书心得略表一二,望起抛砖引玉之效。

================================

关于中文问题实际上并没有什么复杂的,请注意如下2个细节:

1)只要是gb2312,gbk,utf8等支持多字节编码的字符集都可以储存汉字,当然,gb2312中的汉字数量远少于gbk,而gb2312,gbk等都可在utf8下编码。因此,要想数据表中能储存中文只需数据表的字符集按需任选一种可存储汉字的既可。

在建立数据表时,若数据库的字符集不支持中文集则在create table 后面加上 character set gb2312/gbk/utf8 任选其一既可,否则新建的表会自动采用与数据库相同的字符集的。
MySQL还有一个很棒的地方,可以为列指定字符集,hoho~~我喜欢

总之,用show create table table_name; 查看确保你的数据表的字符集支持中文存储既可




2)至于前台显示、输入中文的问题,由于本人不会php等(所以也不用客户端软件),因此仅就cmd下的client为例作说明,想来在其他客户端也应是如此配置吧,有不对的地方望指教,有遗漏的望大家补充。

很多帖子中说,需要client的字符集与服务器端字符集、数据库字符集等一致,其实无须这么复杂。

在任何的字符集状态下,我们都可以对可存储中文的数据表插入中文,只需要在所要插入的中文前添加一个introducer表明我要对此中文的编码方式既可,请看:
insert into table_name (column_with_chinese) values( _gbk '我要插入的中文');
这个命令中的_gbk即是一个"character set introducer",它表明后面的 '我要插入的中文'将采用gbk编码。请大家注意introducer和函数convert()的区别,这个,留给大家自己查阅资料。
这样,无论在任何字符集下,都可以保证正确无误的插入中文,或者是其他任何字符集的文字。


说到这里,可能大家觉得太烦了,每次都要加一个introducer,那么我们再来看看mysql的设置,看看怎么简化它。
用命令show variables like 'character\_set\_%';查看当前字符集设定:
+--------------------------+--------+
| Variable_name            | Value  |
+--------------------------+--------+
| character_set_client     | latin1 |
| character_set_connection | latin1 |
| character_set_database   | utf8   |
| character_set_filesystem | binary |
| character_set_results    | latin1 |
| character_set_server     | utf8   |
| character_set_system     | utf8   |
+--------------------------+--------+
(我这里为了演示故意设置成latin1这种不支持多字节的字符集)

很多人会遇到的错误:Data too long for column 'XXX' at row 1,其产生的原因在于character_set_connection的字符集设置,如果我们用了introducer,那么该参数无视;若将此参数改为与数据表中文编码方式相同,如gbk,则我们可省略掉introducer的书写,传递到服务端的字符串将自动以该字符集进行编码。

此时,我们用select命令来查看数据表数据,却发现会出现乱码现象,因此,请大家注意character_set_results这个参数,他表示的是服务器段返回给客户端的结果集所采用的字符集,因此,仅需将此设置成gbk:set character_set_results = gbk; 那么我们就可以正常的查看数据表内的中文内容了。


由此可见出现中文问题最关键的两个参数就是以上这两个,有些则其他参数的含义留给各位自行查阅资料。

若大家觉得单独设置字符集太繁琐,那么最简单的工作就是用set names charset_name;一次性设置客户端的所有字符集,这下可就可以偷懒了。

RAID(饮水机的比拟):【上一篇】
添加datafile失败后的处理:【下一篇】
【相关文章】
  • mysql使用指南
  • JIRA3.6.4 安装指南(POSTGRESQL8.1、MYSQL5、ORACLE10G+TOMCAT5.5.17、TOMCAT5.028)
  • 正确使用mysql + MFC的一个要注意问题
  • 搞定BASE+MYSQL+SNORT+PHP+APACHE
  • FAMP2.1一键搭建Apache+mysql+php+GD库+phpmyadmin(for Fre
  • [mysql]中文條件查詢使水晶報表翻頁異常9/6
  • Mysql的几点使用方法
  • Jsp二进制文件存入mysql DB
  • MySQL配置文件
  • MySQL4.1.20编译安装
  • 【随机文章】
  • 利用游标返回结果集的的例子(Oracle 存储过程)
  • 新手如何学习C语言
  • FVWM
  • 在存储过程中调用外部的动态连接库(MS SQL Server7.0/2000环境)
  • ORA-04030 问题解决
  • 他和她的故事......
  • 用程序来自动建立FTP帐号(serv-u的odbc设置)
  • 彻底改变windows的桌面工具-Talisman
  • 趣味程序:打印自己代码的程序
  • 窗口类的诞生(注册自己的窗口类一)
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.