个人 企业
用户名:
密码:
 
企业服务   安全学院   安全资讯
安全动态  |  前沿技术  |  黑客防范安全漏洞防毒杀毒编程技术安全案例 |  电子政务产品推荐网管技术安全采购产品测评在线代理OICQ
检测评估安全学院软件下载互动交流安全沙龙应急咨询技术认证安全人才技术社区嘉宾聊天安全调查
  资讯 频道 技术    

一分钟注册享受免费网站安全评估

新闻热点

美国谋划夺取全球“制网权”
攻击指定IP地址及端口的黑客病毒
“黑客”三天侵吞21万获刑11年
微软浏览器IE7被发现存在两个漏洞
黑客入侵万达广场网站 提醒修复漏洞

软件热点
完美卸载V2007 完整版
防黑菜鸟必学系列视频教程
c语言视频教学30讲第14讲
黑客攻防绝招之三十六计
redhatlinux9安装的全程录像
IIS6最佳安全性实战
   
 
Mysql中文字符FAQ
时间:2008-2-12 12:37:23 作者:www.sec120.com  出处:www.sec120.com

一、插入的中文数据变成乱码 
  用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.永久方案:
  打开/etc/my.cnf文件 找到[mysql]部分,将default-character-set=latin1改成default-character-set=gbk。
  如果没有改行,则增加之。
  default-character-set=gbk
 

二、备份数据时,备份文件中的中文无法显示

   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

 

评论 | 收藏 | | 打印 | 关闭
相关新闻链接
     
关于Sec120 | 服务产品 | 联系我们 | 招贤纳才 | 广告服务 | 网站律师 | 网站地图 | 我要投稿

 

互联安全网  粤ICP备06118359 Copyright 1999-2009 All Right Reserved.