ql,oracle,DB2等,其中mysql作为
免费DB中的老大,性能和功
能是得到公认的,安装配置比较方便,相
应的driver也比较完善,性价比是绝对的OK.所以就以mysql为例.
我个人建议采用my
sql的默认编码来存储,也就是iso-8859-1(在
mysql的选项中对应于latin-1).理
由主要有这么几个,一是iso-8859-1对中
文的支持不错;二是跟java中的默认编码一致,至少在很多地方免除了转换编码的麻烦;三是默认的比
较稳定,兼容性也更好,因为多编码的
支持是由具体的
DB产品提供的,别说跟其它的DB会不兼容,即使自身的不同版本也可能出现兼容性的问
题.
例如mysql 4.0以前的产品中,很多中文的解决方案是利用connection中的characterEncoding字段来制
定编码,比如gb2312什么的,这样是ok
的,因为原数据都是ISO8859_1编码,jdbc驱动会采用url里面指定的character set来进行编码,
resultSet.getString(*)取出的就是编码后的
字符串.这样就直接拿到gb2312的数据了.
但是mysql 4.1的推出给很多dbadmin带来了不小的麻烦,因为mysql4.1支持column level的character
set,每个table,column都可以指定编码
,不指定就是ISO8895_1,因此jdbc取出数据后会根据column的character set来进行编码,而不再是用
一个全局的参数来取所有的数据了.
这从另一个方面也说明了乱码问题的产生实在是很复杂的事情,原因太多了.我也只是针对自己遇
////////////////////////////////////////////////////////////////////////////////////////
jsp中文问题解决之道[转载]
和Java一样,JSP是目前比较热门的一个话题.它是一种在服务器端编译执行的Web
设计语言,因为脚本
语言采用了
Java,所以
JSP继承了Java的所有优点.可是在使用JSP
程序的过程中,常遇到中文乱码问题
,很多人为此头疼不已,初学的时候我就深受其害,而且使用平台不同,中文乱码问题的解决方法也不
同,无形中增加了
学习JSP的难度.其实,在彻底了解相关原因后,问题还是比较容易解决的.,以下
是我总结的解决方法,相信对读者会有一定的借鉴意义. (因为我使用得最多的是Tomcat环境,所以
主要是以Tomcat为例,其它的环境只会提及一下,但解决办法也是差不多的!
每个国家(或区域)都规定了计算机信息交换用的字符编码集,如美国的扩展ASCII码、中国的GB2312
-80、日本的 JIS 等,作为该国家(区域)信息处理的基础,有着统一编码的重要作用.由于各本地字
符集代码范围重叠,相互间信息交换困难,软件本地化版本独立维护成本较高.因此有必要将本地化工
作中的共性抽取出来,做一致性处理,将特殊的本地化处理内容降低到最少,这就是所谓的国际化
(I18N).各种语言信息被规范为本地信息,而底层字符集采用包含了所有字符的Unicode.
相信了解JSP代码的读者对ISO8859-1一定不陌生,ISO8859-1是我们平时使用比较多的一个CodePage,
它属于西欧语系.GB2312-80 是在国内
计算机汉字信息技术发展初始阶段制订的,其中包含了大部分
常用的一、二级汉字和9区的符号.该字符集是几乎所有的中文系统和国际化的
软件都支持的中文字符
集,这也是最基本的中文字符集.
GBK 是 GB2312
-80 的扩展,是向上兼容的.它包含了20902个汉字,其编码范围是 0x8140~
0xFEFE,剔除高位 0x80 的字位,其所有字符都可以一对一映射到 Unicode 2.0,也就是说 Java
实际上提供了对 GBK 字符集的支持.
>GB18030-2000(GBK2K) 在 GBK 的基础上进一步扩展了汉字,增加了藏、蒙等少数民族的文字.