一、java web中涉及编解码的地方

(1)浏览器端向后台发起请求时:URL、Cookie、Parameter;

(2)后台响应返回数据时:页面编码,数据库数据编码;

二、在各处设置统一编码(以服务器tomcat,编码UTF-8为例)

(1)URL的编解码:在tomcat配置文件server.xml中设置<Connector URIEncoding="UTF-8" useBodyEncodingForURI="true">,可解决以Get方法提交参数中文乱码的问题。如果没有定义,那么tomcat将以默认编码ISO-8859-1解析,URIEncoding是对URI(即URL除掉端口之前的剩下部分)的解码,useBodyEncodingForURI是对QueryString(即URL?后的参数)的解码。另外,在filter中使用request.getRequestURI()出现乱码的话,可用URLDecoder.decode解码。

(2)POST表单的编解码:一定要在第一次调用request.getParameter之前,通过request.setCharacterEncoding(charset)来设置。POST表单参数是通过HTTP的BODY传递到服务端的,浏览器是根据ContentType的Charset对表单参数进行编码,而在服务端如果没有设置CharaterEncoding的话,将以ISO-8859-1编码解析参数。

(3)HTTP BODY的编解码:可通过response.setCharacterEncoding来设置,它是对服务器响应内容进行编码;还可在页面设置contentType="text/html;charset=UTF-8",也是指定对服务器响应内容的编码字符。而浏览器将通过Content-Type的charset来解码。另外,在jsp页面设置pageEncoding="UTF-8"的作用是设置JSP编译成Servlet时使用的编码。

(4)访问数据库编码:主要设置JDBC URL来指定,添加useUnicode=true&characterEncoding=UTF-8即可。

最后,本文主要参照君山的博客:http://xulingbo.net/  。

最新文章

  1. sqlalchemy学习
  2. jacascript中的原型链以原型
  3. sqlserver 对字符串的SUM
  4. jquery 时间运算、格式化的方法扩张
  5. ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(六) 之 Layim源码改造右键菜单--好友、组管理功能的实现。
  6. Product of Array Exclude Itself
  7. 如何在 Linux 中整理磁盘碎片
  8. SQL SERVER 锁定的实例
  9. yii2 用gii生成后台模块 view path描述
  10. MySQL的InnoDB表如何设计主键索引-转自淘宝MySQL经典案例
  11. Eclipse插件管理
  12. VC++深入详解读书笔记-第六章菜单
  13. bootstrap table笔记
  14. This application failed to start because it could not find or load the Qt platform plugin &amp;quot;xcb&amp;quot;.
  15. Ext.grid.EditorGridPanel保存
  16. YOLO理解
  17. how to istall virtualbox on centos
  18. webapi core2.1 Identity.EntityFramework Core进行配置和操作数据 (一)没什么用
  19. js 截取指定字符长度 为数组
  20. JSONPATH使用方法

热门文章

  1. 【iOS系列】-自定义Modar动画
  2. UIPanGestureRecognizer上下左右滑动方向推断算法
  3. python -- day 11 考试题
  4. configuration类详解
  5. Axure Base 07 元件使用思路的补充
  6. android adb源码分析(5)【转】
  7. Oracle:datafile删除后,重启server报ORA-01110
  8. codeforces 505C C. Mr. Kitayuta, the Treasure Hunter(dp)
  9. 从OutStreamWriter 和Filewriter谈Java编码
  10. MFC之document与view实践总结