mysql 4.1版本之后引入多字符编码,我的理解是不论数据库里采用那种编码,只要存入和取出的时候设置的编码相同就不会出现乱码。mysql增加了转码,就是你存入utf-8编码,取出的时候只要告诉mysql你要得到那种编码它就返回正确的结果
如果default-character-set=gb2312 那么就不能存utf8编码的字符,但它的好处是省空间,对数据量大的有用
默认编码是latin1编码,跟gb2312类似,无法插入utf-8编码字符,会提示Data too long for column 'xx' at row
所以网页要采用utf-8编码,数据库也要采用,utf-8编码的网页提交的数据也是utf-8的。
采用latin1或者gb2312,gbk的,只要告诉mysql它你想要的编码就能得到正果
语句就是
SET NAMES xxx;
SET CHARACTER_SET xxx;