热烈祝贺台州朗动科技的站长论坛隆重上线!(2012-05-28)    热烈庆祝伟大的祖国60周年生日 点击进来我们一起为她祝福吧(2009-09-26)    站长论坛禁止发布广告,一经发现立即删除。谢谢各位合作!.(2009-08-08)    热烈祝贺台州网址导航全面升级,全新版本上线!希望各位一如既往地支持台州网址导航的发展.(2009-03-28)    台州站长论坛恭祝各位新年快乐,牛年行大运!(2009-01-24)    台州Link正式更名为台州网址导航,专业做以台州网址为主的网址导航!(2008-05-23)    热烈祝贺台州Link资讯改名为中国站长资讯!希望在以后日子里得到大家的大力支持和帮助!(2008-04-10)    热烈祝贺台州Link论坛改名为台州站长论坛!希望大家继续支持和鼓励!(2008-04-10)    台州站长论坛原[社会琐碎]版块更名为[生活百科]版块!(2007-09-05)    特此通知:新台州站长论坛的数据信息全部升级成功!">特此通知:新台州站长论坛的数据信息全部升级成功!(2007-09-01)    台州站长论坛对未通过验证的会员进行合理的清除,请您谅解(2007-08-30)    台州网址导航|上网导航诚邀世界各地的网站友情链接和友谊联盟,共同引领网站导航、前进!(2007-08-30)    禁止发广告之类的帖,已发现立即删除!(2007-08-30)    希望各位上传与下载有用资源和最新信息(2007-08-30)    热烈祝贺台州站长论坛全面升级成功,全新上线!(2007-08-30)    
便民网址导航,轻松网上冲浪。
台州维博网络专业开发网站门户平台系统
您当前的位置: 首页 » MySQL/MSSQL编程 » MySQL中文字符FAQ

MySQL中文字符FAQ

论坛链接
  • MySQL中文字符FAQ
  • 发布时间:2007-09-07 23:48:41    浏览数:7159    发布者:tznktg    设置字体【   
1.用EMS工具建立一个表t,添加一个字段f1,varchar(20).
然后再在EMS中为该表添加一条记录,f1的值为'adfasfsa',成功。
但当f1的值为中文时,提示失败:数据太长。
f1是varchar(20),怎么会数据太长呢?用mysql命令行工具:insert into t (f1) values ('我');
提示依旧。

分析:
当前配置的character_set_client值为非中文字符集。
在mysql的一次会话中,服务器收到客户端发来的指令后,大致要执行3个动作:
1、服务器认为收到的指令是按当前character_set_client环境变量所指定的字符集编码的,
2、然后再将其转换成character_set_connection所指定的字符集编码
3、分析、执行该指令。

注:如果character_set_connection所指定的字符集不是中文字符集,则插入后,记录中的的中文仍然无法正常显示。
因为mysql服务器是按character_set_connection所指定的编码存入数据库的。
因此。character_set_client和character_set_connection的字符集必须保持一致。
另外,character_set_results变量所指定的字符集表示服务器向客户端传输数据时所采用的字符集
所以配置文件中的default-character-set参数同时表示character_set_connection、character_set_client、character_set_results
如果当前character_set_client=latin1,则在将insert into t (f1) values ('我')从latin1转换成character_set_connection所指定的编码字符集时,
mysql发现指令中的'我'是宽字符集,不是latin1字符集,于是报告错误:"ERROR 1406 (22001): Data too long for column 'f1' at row 1"

解决办法:
1.临时方案:在mysql命令行执行命令:set character_set_client = gbk.临时将character_set_client设成gbk字符集。
2.[color=Green]永久方案:
打开/etc/my.cnf文件 找到[mysql]部分,将default-character-set=latin1改成default-character-set=gbk。
如果没有改行,则增加之。
default-character-set=gbk

2、用mysqldump工具备份数据时,备份文件中的中文无法显示:
mysqldump -u root -p --all-databases > backup.sql
打开backup.sql后,发现数据部分中的中文全部是????号。

此时加一个参数:--default-char-set=gbk,重新导出即可。
mysqldump -u root -p --all-databases --default-char-set=gbk > backup.sql
娱乐休闲专区A 影视预告B 音乐咖啡C 英语阶梯D 生活百科
网页编程专区E AMPZF HTMLG CSSH JSI ASPJ PHPK JSPL MySQLM AJAX
Linux技术区 N 系统管理O 服务器架设P 网络/硬件Q 编程序开发R 内核/嵌入
管理中心专区S 发布网址T 版主议事U 事务处理