ICANN认证国际域名顶级注册机构
网站建设,域名注册,空间租用,软件销售,广告设计 域名注册,空间租用, 网站建设,东莞网页设计,域名注册,网站推广,网站开发,网页设计 网站推广,,百度推广,新浪推广,雅虎推广,网易推广 标志设计,画册设计,包装设计,VI策划,企业形象顾问 连邦软件加盟店,提供销遥行,管家婆,速达,用友ERP,诺顿等软件报价及销售 建站必读 腾达网络,上网帮助中心, 腾达为东莞等地,提供网站建设,网站推广,广告设计,软件销售等优质服务!
建站必读


 
 
当前位置:首页 -> 建站必读 -> JSP技术
jsp/servlet中文问题的解决(转贴,好东西)
JSP/Servlet 中的汉字编码问题

(作者:张建芳,转自IBM DeveloperWorks 中国网站 2001年04月18日 15:08)



  网上就 JSP/Servlet 中 DBCS 字符编码问题有许多优秀的文章和讨论,本文对它们作一些整理,并结合 IBM WebSphere Application Server 3.5(WAS)的解决方法作一些说明,希望它不是多余的。



1.问题的起源

  每个国家(或区域)都规定了计算机信息交换用的字符编码集,如美国的 ASCII,中国的 GB2312-80,日本的 JIS 等,作为该国家/区域内信息处理的基础,有着统一编码的重要作用。字符编码集按长度分为 SBCS(单字节字符集),DBCS(双字节字符集)两大类。早期的软件(尤其是操作系统),为了解决本地字符信息的计算机处理,出现了各种本地化版本(L10N),为了区分,引进了 LANG,Codepage 等概念。但是由于各个本地字符集代码范围重叠,相互间信息交换困难;软件各个本地化版本独立维护成本较高。因此有必要将本地化工作中的共性抽取出来,作一致处理,将特别的本地化处理内容降低到最少。这也就是所谓的国际化(I18N)。各种语言信息被进一步规范为 Locale 信息。处理的底层字符集变成了几乎包含了所有字形的 Unicode。



  现在大部分具有国际化特征的软件核心字符处理都是以 Unicode 为基础的,在软件运行时根据当时的 Locale/Lang/Codepage 设置确定相应的本地字符编码设置,并依此处理本地字符。在处理过程中需要实现 Unicode 和本地字符集的相互转换,甚或以 Unicode 为中间的两个不同本地字符集的相互转换。这种方式在网络环境下被进一步延伸,任何网络两端的字符信息也需要根据字符集的设置转换成可接受的内容。



  Java 语言内部是用 Unicode 表示字符的,遵守 Unicode V2.0。Java 程序无论是从/往文件系统以字符流读/写文件,还是往 URL 连接写 HTML 信息,或从 URL 连接读取参数值,都会有字符编码的转换。这样做虽然增加了编程的复杂度,容易引起混淆,但却是符合国际化的思想的。



  从理论上来说,这些根据字符集设置而进行的字符转换不应该产生太多问题。而事实是由于应用程序的实际运行环境不同,Unicode 和各个本地字符集的补充、完善,以及系统或应用程序实现的不规范,转码时出现的问题时时困扰着程序员和用户。



2.GB2312-80,GBK,GB18030-2000 汉字字符集

  其实解决 JAVA 程序中的汉字编码问题的方法往往很简单,但理解其背后的原因,定位问题,还需要了解现有的汉字编码和编码转换。



  GB2312-80 是在国内计算机汉字信息技术发展初始阶段制定的,其中包含了大部分常用的一、二级汉字,和 9 区的符号。该字符集是几乎所有的中文系统和国际化的软件都支持的中文字符集,这也是最基本的中文字符集。其编码范围是高位0xa1-0xfe,低位也是 0xa1-0xfe;汉字从 0xb0a1 开始,结束于 0xf7fe;



  GBK 是 GB2312-80 的扩展,是向上兼容的。它包含了 20902 个汉字,其编码范围是 0x8140-0xfefe,剔除高位 0x80 的字位。其所有字符都可以一对一映射到 Unicode 2.0,也就是说 JAVA 实际上提供了 GBK 字符集的支持。这是现阶段 Windows 和其它一些中文操作系统的缺省字符集,但并不是所有的国际化软件都支持该字符集,感觉是他们并不完全知道 GBK 是怎么回事。值得注意的是它不是国家标准,而只是规范。随着 GB18030-2000国标的发布,它将在不久的将来完成它的历史使命。



  GB18030-2000(GBK2K) 在 GBK 的基础上进一步扩展了汉字,增加了藏、蒙等少数民族的字形。GBK2K 从根本上解决了字位不够,字形不足的问题。它有几个特点:



  ●它并没有确定所有的字形,只是规定了编码范围,留待以后扩充。



  ●编码是变长的,其二字节部分与 GBK 兼容;四字节部分是扩充的字形、字位,其编码范围是首字节 0x81-0xfe、二字节0x30-0x39、三字节 0x81-0xfe、四字节0x30-0x39。



  ●它的推广是分阶段的,首先要求实现的是能够完全映射到 Unicode 3.0 标准的所有字形。



  ●它是国家标准,是强制性的。



  现在还没有任何一个操作系统或软件实现了 GBK2K 的支持,这是现阶段和将来汉化的工作内容。



3.JSP/Servlet 汉字编码问题及在 WAS 中的解决办法

  3.1 常见的 encoding 问题的现象



  网上常出现的 JSP/Servlet encoding 问题一般都表现在 browser 或应用程序端,如:



  ●浏览器中看到的 Jsp/Servlet 页面中的汉字怎么都成了 ’?’ ?



  ●浏览器中看到的 Servlet 页面中的汉字怎么都成了乱码?



  ●JAVA 应用程序界面中的汉字怎么都成了方块?



  ●Jsp/Servlet 页面无法显示 GBK 汉字。



  ●Jsp/Servlet 不能接收 form 提交的汉字。



  ●JSP/Servlet 数据库读写无法获得正确的内容。



  隐藏在这些问题后面的是各种错误的字符转换和处理(除第3个外,是因为 Java font 设置错误引起
 
 
本站关键词:
|石龙网站建设网页制作|东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计||石龙网站建设网页制作|东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计||石龙网站建设网页制作|东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计||石龙网站建设网页制作|东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计||石龙网站建设网页制作|东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计||石龙网站建设网页制作|东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计||石龙网站建设网页制作|东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计||石龙网站建设网页制作|东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计||石龙网站建设网页制作|东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计||石龙网站建设网页制作|东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计||石龙网站建设网页制作|东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计||石龙网站建设网页制作|东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计||石龙网站建设网页制作|东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计||石龙网站建设网页制作|东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|
域名注册 | 虚拟主机 | 网站建设 | 网站推广 | 广告设计 | 帮助中心 | 软件中心 | 关于腾达
东莞市腾达信息工程有限公司      本站网络实名: 东莞网站建设
地址:东莞市新城市中心区第一国际B座610   邮编:523007
电话:0769-22026071 22026072 传真:0769-22026076 24小时服务热线:13712032014
© 2002~2005 腾达网络   版权所有