Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1087180
  • 博文数量: 321
  • 博客积分: 7872
  • 博客等级: 少将
  • 技术积分: 2120
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-16 09:06
文章分类

全部博文(321)

文章存档

2017年(1)

2016年(1)

2015年(12)

2014年(17)

2013年(78)

2012年(15)

2011年(17)

2010年(67)

2009年(102)

2008年(11)

分类: LINUX

2012-08-03 14:49:26

为了对国际化的支持,MySQL的客户端和服务器端开始都采用UTF8,包括表示层的各个页面也统一采用UTF-8,但这样在插入数据的时候就出现了ERROR 1406 (22001): Data too long for column 'username' at row 1错误!错误原因是‘username’字段数据太长,实际上最根本的原因是由于字符集编码的问题。

解决方案

其实无论是JSP页面,还是命令提示符的方式,都是MySQL数据库的用户接口,在你往数据库中插入数据的时候,必须把这些“用户接口”的字符集编码设置成与数据库存储时的字符编码一致,这样才能正常显示。(正像我们在JSP页面中加入<%@ page language="java" pageEncoding="UTF-8"%>'conten-type:text/html;charset=utf-8')

的意思一样,需要把命令提示符的字符集编码设成UTF8,然后再做相应的数据库操作。)

注意点:

1、windows下的命令提示符字符集编码只有GBK,它兼容GB2312,所以你可以在MySQL命令行使用set names gbk,也可以使用set names gb2312,因为gbk对gb2312兼容,但gbk对utf8却不兼容,换句话说,utf8字符集包括gbk,gbk包括gb2312.所以在windows下你使用set names gbk,set names gb2312都能正常操作。但是用set names utf8却会出错。但在windows下的命令提示符字符编码好像是修改不了的。Linux下是支持的!

2、如果你是在EMS,MySQL的一个图形化工具,在象上面设置的情况下,你看到的有可能还是乱码,你可以按以下操作来处理:1)右击数据库2)选择Database Registion info...3)在Client charset中选择[gb2312(GB2312 Simplified Chinese)] 或者[gbk(GBK Simplified Chinese)]



转自:
http://snowlucky.iteye.com/blog/326553
阅读(872) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~