javaWeb 中的编码解码.pdfVIP

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

j avaWeb 中的编码解码 j avaWeb中的编码解码 在上篇博客中LZ介绍了前⾯两种场景 (IO、内存)中的j ava编码解码操作,其实在这 两种场景中我 只需要在编码解码过程中设置正确的编码解码⽅式⼀般⽽⾔是不会出 现乱码的。对于我 从事j ava开发的⼈⽽⾔,其实最容易也是产⽣乱码最多的地⽅就 是web部分。⾸先我 来看在j avaWeb 中有哪些地⽅存在编码转换操作。 编码解码 通过下图我 可以了解在j avaWeb 中有哪些地⽅有转码: ⽤户想服务器发送⼀个HTTP请求,需要编码的地⽅有url、cookie 、parameter ,经过编 码后服务器接受HTTP请求,解析HTTP请求,然后对url、cookie 、parameter进⾏解 码。在服务器进⾏业务逻辑处理过程中可能需要读取数据库、本地⽂件或者⽹络中的 其他⽂件等等,这些过程都需要进⾏编码解码。当处理完成后,服务器将数据进⾏编 码后发送给客户端,浏览器经过解码后显⽰给⽤户。在这个整个过程中涉及的编码解 码的地⽅较多,其中最容易出现乱码的位置就在于服务器与客户端进⾏交互的过程。 上⾯整个过程可以概括成这样,页⾯编码数据传递给服务器,服务器对获得的数据进 ⾏解码操作,经过⼀番业务逻辑处理后将最终结果编码处理后传递给客户端,客户端 解码展⽰给⽤户。所以下⾯我就请求对j avaweb 的编码解码进⾏阐述。 请求 客户端想服务器发送请求⽆⾮就通过四中情况: 1、URL⽅式直接访问。 2、页⾯链接。 3、表单get提交 、表单post提交 URL⽅式 对于URL ,如果该URL 中全部都是英⽂的那倒是没有什么问题,如果有中⽂就要涉及 到编码了。如何编码?根据什么规则来编码?又如何来解码呢?下⾯LZ将⼀⼀解答 ! ⾸先看URL 的组成部分: 在这URL 中浏览器将会对path和parameter进⾏编码操作。为了更好地解释编码过程, 使⽤如下URL :8080/perbank/我是cm?name=我是cm 将以上地址输⼊到浏览器URL输⼊框中,通过查看http 报⽂头信息我 可以看到浏览 器是如何进⾏编码的。下⾯是IE 、Firefox 、Chrome三个浏览器的编码情况: 可以看到各⼤浏览器对“我是”的编码情况如下: browser path部分 Query String Firefox E6 88 9 1 E6 98 AF E6 88 9 1 E6 98 AF Chrome E6 88 9 1 E6 98 AF E6 88 9 1 E6 98 AF IE E6 88 9 1 E6 98 AF CE D2 CA C7 查阅上篇博客的编码可知对于path部分Firefox 、chrome 、IE都是采⽤UTF-8编码格式, 对于Query String部分Firefox 、chrome采⽤UTF-8 ,IE采⽤GBK 。⾄于为什么会加 上% ,这是因为URL 的编码规范规定浏览器将ASCII字符⾮ ASCII 字符按照某种编码 格式编码成 16 进制数字然后将每个 16 进制表⽰的字节前加上“%” 。 当然对于不同的浏览器,相同浏览器不同版本,不同的操作系统等环境都会导致编码 结果不同,上表某⼀种情况,对于URL编码规则下任何结论都是过早的。由于各⼤浏 览器、各个操作系统对URL 的URI 、QueryString编码都可能存在不同,这样对服务器 的解码势必会造成很⼤的困扰,下⾯我 将已tomcat ,看tomcat是如何对URL进⾏解 码操作的。 解析请求的 URL 是在 org .apache .coyote .HTTP 11.InternalInputBuffer 的 parseRequestLine ⽅法中,这个⽅法把传过来的 URL 的 byte[] 设置到 org .apache .coyote .Request 的相应的属性中。这⾥的 URL 仍然是 byte 格式,转成 char 是在 org .apache .catalina.connector .CoyoteAdapter 的 convertURI ⽅法中完成的: protected void convertURI(Me ageByte uri, Reque t reque t) throw Exception { ByteChunk bc = uri.getByteChunk();

文档评论(0)

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

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

1亿VIP精品文档

相关文档