JavaWeb应用程序的字符编码问题.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
JavaWeb应用程序的字符编码问题

Java Web 应用程序的字符编码问题??? Java Web 应用程序经常会出现乱码的情况,这里可以通过 Servlet API 中的标准 Filter 来实现,也可以在 Web 容器配置 URIEncoding。这些都依赖于浏览器的请求方式。 在 Web 容器的配置文件中配置 URIEncoding = UTF-8 使用 Servlet API 的标准 Filter 结果 地址栏中直接输入链接(含汉字) √ × 失败(编码成功) 地址栏中直接输入链接(含汉字) × √ 失败(编码成功) 地址栏中直接输入链接(含汉字) √ √ 失败(编码成功) 页面内的普通链接(a 标签,含汉字) √ × 编码成功,地址栏中直接显示汉字 页面内的普通链接(a 标签,含汉字) × √ 编码失败 页面内的普通链接(a 标签,含汉字) √ √ 编码成功,地址栏中直接显示汉字 form get 提交 √ × 编码成功,地址栏显示编码后的汉字 form get 提交 × √ 编码失败 form get 提交 √ √ 编码成功,地址栏显示编码后的汉字 form post 提交 √ × 编码失败 form post 提交 × √ 编码成功 form post 提交 √ √ 编码成功 ??? 因此,通过以上表格的总结,我们可以得出这样一个结论:URLEncoding 是针对 get 请求,Filter 是针对 post 请求。 Web容器的编码问题 2008-11-19 09:08:53 ?? 技术 | ?评论(0) | ?浏览(595) !--[if !supportLists]--一、????? !--[endif]--概述 本文将从编码基本知识,Java对字符的处理,以及常见问题的解决三个方面对问题进行阐述。 !--[if !supportLists]--二、????? !--[endif]--编码基本知识 1、ISO-8859-1? 很 明显,ISO-8859-1编码表示的字符范围很窄,无法表示中文字符。但是,由于是单字节编码,和计算机最基础的表示单位一致,所以很多时候,仍旧使用 ISO-8859-1编码来表示。而且在很多协议上,默认使用该编码。比如,虽然中文两个字不存在ISO-8859-1编码,以gb2312编码为例,应 该是d6d0?cec4两个字符,使用ISO-8859-1编码的时候则将它拆开为4个字节来表示:d6?d0?ce?c4(事实上,在进行存储的 时候,也是以字节为单位处理的)。而如果是UTF编码,则是6个字节e4?b8?ad?e6?96?87。很明显,这种表示方法还需要以另一种编码为基础。? 2、GB2312/GBK? 3、UNICODE? 需要说明的是,定长编码便于计算机处理(注意GB2312/GBK不是定长编码),而UNICODE又可以用来表示所有字符,所以在很多软件内部是使用UNICODE编码来处理的,比如java。? 4、UTF?-8 注意,虽然说UTF-8是为了使用更少的空间而使用的,但那只是相对于UNICODE编码来说,如果已经知道是汉字,则使用 GB2312/GBK无疑是最节省的。不过另一方面,值得说明的是,虽然UTF-8编码对汉字使用3个字节,但即使对于汉字网页,UTF-8编码也会比 UNICODE编码节省,因为网页中包含了很多的英文字符。? !--[if !supportLists]--三、????? !--[endif]--?java对字符的处理? 1、?getBytes(charset)? 3、new?String(charset)? 因为UTF-8可以用来表示/编码所有字符,所以new?String(?str.getBytes(?UTF-8?),?UTF-8?)?==str,即完全可逆。? 4、setCharacterEncoding()? 对于request,是指提交内容的编码,指定后可以通过getParameter()则直接获得正确的字符串,如果不指定,则默认使用ISO-8859-1 编码,需要进一步处理。值得注意的是在执行setCharacterEncoding()之前,不能执行任何 getParameter()。对于response,则是指定输出内容的编码,同时,该设置会传递给浏览器,告诉浏览器输出内容所采用的编码。? 5、几处设置? !--[if !supportLists]--???????? !--[endif]--JSP编译????????? !--[endif]--JSP输出????????? !--

文档评论(0)

kakaxi + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档