• 理解web编码原理,解决乱码


    jsp 编码及乱码解决方案

    1. 在web中request 的生存周期是从一次request开始到本次response结束,在这个过程中对象是如何编码的,只有理解浏览器、web应用的编码解码,我们在开发过程中才可以避免乱码的困扰。

    在jsp 页面中,有3中编码信息

    <% @ page pageEncoding="utf-8"  %>

     另外,该参数还有一个功能,就是在JSP中不指定contentType参数,也不使用response.setCharacterEncoding方法时,指定对服务器响应进行重新编码的编码

    <%@page  contentType="text/html,charset=utf-8" %>

    <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> </body> </html>


    1 处的编码表示jsp 将按此编码被翻译为servlet。同时也指定了jsp页面本身的编码方式为UTF-8

    2 处的编码表示当web响应浏览器的请求时,response页面在浏览器端用哪种编码解析。与在servlet中使用response.setCharaterEncoding("utf-8")等同;

    3 处的编码表示当前页面用post提交数据时,浏览器对数据的编码方式。

    乱码问题发生在浏览器、web服务端 发送和接收时的编码解码方式不同造成的。

    浏览器发送数据时对URL及参数的编码依据是2 对 页面中post数据的编码使用3

    服务端在接收数据时,对于post数据通过request.setCharacterEncoding("utf-8");

    对于get方式提交的数据通过在tomcat server.xml配置URIEncoding="utf-8"解决,这个主意是针对get方式提交数据,useBodyEncodingForURI为true,表示针对不同应用使用自身的编码。服务端在发送数据时编码依赖顺序是response.setCharacterEncoding—contentType—pageEncoding(后两者是在被发送页面中)
    spring中过滤器解决乱码问题。   

    我们知道java是unicode编码,unicode是可变长编码,只规定了2进制的表示,没有规定它的实现,而utf-8,utf-16就是unicode的实现。jvm 采用unicode编码,

    对于本人遇到的编码问题及查阅网络资料的总结,收笔时间:2012年11月18日20:19:25,另推荐一篇,该篇总结的很全,希望对于新手有所帮助。

    http://blog.sina.com.cn/s/blog_600046120100thst.html 

    http://www.iteye.com/topic/311583  

    http://www.iteye.com/topic/1097560

  • 相关阅读:
    在线pdm查看
    vscode
    idea for Mac 代码提示设置
    定位功能
    canvas刮奖
    jquery生成二维码
    Redux DevTools浏览器插件调试redux
    .gitignore
    HBuilder在MAC下的SVN
    UMD编码规范
  • 原文地址:https://www.cnblogs.com/guoyuqiangf8/p/2776281.html
Copyright © 2020-2023  润新知