Mysql数据库字符集在国内常使用的主要有三种:默认的latin1(即iso8859-1)、utf8及gbk.
latin1虽然是单字节编码,也能存中文,只需要写及读数据库时进行编码转换就可以不产生中文乱码问题,如:
写数据库时用String dbStr=new String(appStr.getBytes("GBK"),"ISO8859-1");
读数据库时用String appStr=new String(dbStr.getByes("ISO8859-1"),"GBK");
到底选择哪种字符集,有一个重要的考量因素:你是否需要按中文拼音排序,如果需要优先选择gbk编码,因为gbk编码不需要任何特殊设置,latin1需要order by binary COLUMN,utf8需要order by convert(COLUMN using gbk) asc。具体请参考:Mysql数据库如何实现按拼音排序。
如果业务系统中大量存在按拼音排序这种需求,尽量使用GBK编码,这样开发的SQL比较规范通用,移植性比较高。如果无拼音排序需求,或是只是个别,那么优选utf8,比较通用。当然如里你的系统是国际化的,需要处理其它多字节语言,那必须用utf8编码了。
Mysql数据库支持服务器级、数据库级、表级及字段级设置编码。一般我们最好保持每个数据库使用同一编码,不要对表、字段单独设置编码,避免引起混乱。
至于安装华丹快速开发平台时,如果选用mysql作系统库,到底选用哪一种编码,原则上三种编码都可以,一是因为华丹开发平台本身按拼音排序的地方很少,二是华丹开发平台对于不同编码支持都很好,不会产生中文乱码的问题。