JSP网页字符集编码

原创 2016年08月31日 14:31:51

1.     JSP网页编码的指定
 JSP网页编码用<%@ page contentType="text/html; charset=UTF-8"%>语句来指定,其中的UTF-8就是JSP文件编码的格式。
 JSP文件编码有两个作用:
 •     表明JSP文件本身的字符编码格式,是ASCII,还是UTF-8等等。这种格式在jsp翻译成java文件时会有影响,大家都知道,jsp文件在被访问时会先被编译成servlet,程序实际访问的是jsp对应的servlet,而不是jsp本身。jsp翻译成的java文件是UTF-8格式的,在jsp文件本身的格式之间和UTF-8格式之间需要做一个转换,这种格式转换就必须首先明确JSP文件本身的字符编码格式。
 •     WEB服务器用这个编码格式来表明响应报文体的编码格式,即response内容的编码格式,也就是告诉浏览器服务器返回的内容是什么格式的,如果不告诉浏览器响应内容是什么格式,那么浏览器就不知道该如何解析响应内容,到底是用GBK来解析,还是UTF-8来解析。在查看JSP翻译成的java文件时,会看到这样一个语句:response.setContentType("text/html; charset=UTF-8")。其中的"text/html; charset=UTF-8"就是来自于JSP文件的编码声明语句。如果JSP的编码声明语句为:<%@ page contentType="text/html; charset=GBK"%>,那么JSP翻译成的java文件中对应的语句就会变成response.setContentType("text/html; charset=GBK"),这时浏览器中展示内容的编码格式也就变成了GBK。
 2.     GET/POST参数编码格式
 GET和POST的参数处理逻辑不一致,众所周知,GET的参数是放在URL里的,需要通过解析URL来获得,而POST的参数则是放在请求正文里的。在服务器端,可以通过response.setCharacterEncoding方法来明确用哪种编码来解析POST参数,但这种方法对GET参数不起作用,因为GET参数是放在URL里的,所以涉及到URL编码的解析。对于Tomcat,可以在server.xml里配置URL的编码格式,方法是在<Connector>元素中通过URIEncoding="UTF-8"来指明,意思就是URL的编码格式是UTF-8,当然也可以设置为URIEncoding="GBK"。如果不指定,Tomcat默认用ISO-8859-1字符编码来解析URL。服务器端采用何种编码格式来设置,需要看浏览器是用何种编码来生成URL,具体后面会有详细说明。
 3.     浏览器生成GET/POST参数所用的编码格式
 现代浏览器一般采用网页内容的编码格式来生成GET和POST参数。即如果网页内容是GBK格式的,则生成的GET和POST参数用GBK格式进行编码,如果网页内容是UTF-8格式的,则生成的GET和POST参数用UTF-8格式进行编码。例如对于参数“我”,用GBK生成的编码是%CE%D2,而用UTF-8生成的编码格式是%E6%88%91。可见,对于相同的参数内容,用不同的编码格式生成的编码内容是不一样的,这也是为什么服务器端为了正确解析参数,要明确参数编码格式的原因。对于JSP程序,浏览器展示的网页内容是JSP文件生成的,因此JSP文件的编码格式也就决定了浏览器网页内容的编码格式,同时也就决定了GET和POST参数的编码格式,最终来说,JSP文件中的<%@ page contentType="text/html; charset=UTF-8"%>编码声明会确定GET和POST参数的编码格式,同时也确定URL的编码格式。
 4.     统一采用UTF-8编码格式
 统一采用UTF-8编码格式是解决乱码问题的最佳解决办法。以Tomcat为例,可以通过以下几方面来将编码统一设置为UTF-8:

  • 对于GET参数,在server.xml的<Connector>元素中设置URIEncoding="UTF-8";
  • 对于POST参数,用一个character encoding filter将编码格式设置为UTF-8,在web.xml中增加以下内容:

    <filter>
         <filter-name>Set Character Encoding</filter-name>
         <filter-class>filters.SetCharacterEncodingFilter</filter-class>
         <init-param>
             <param-name>encoding</param-name>
             <param-value>UTF-8</param-value>
         </init-param>
     </filter>
     <filter-mapping>
         <filter-name>Set Character Encoding</filter-name>
         <url-pattern>/*</url-pattern>
      </filter-mapping>
      其中filters.SetCharacterEncodingFilter类在Tomcat中有,
      5.x版本在webapps/jsp-examples/WEB-INF/classes/filters/SetCharacterEncodingFilter.java
      6.x版本在webapps/examples/WEB-INF/classes/filters/SetCharacterEncodingFilter.java
      可以把这个文件直接加到项目中。

  • 所有的JSP文件都声明为<%@page contentType="text/html; charset=UTF-8" %>


版权声明:本文为博主原创文章,未经博主允许不得转载。

jsp页面默认字符集设置

jsp页面的默认字符集是iso8859-1的

如何在eclipse中更改jsp页面的charset以解决中文乱码问题

再用eclipse部署web应用时,jsp默认的字符集编码如下图: 这在server上运行时,网页中的中文字符就会出现乱码,为了根本的解决这个问题,我们需要设置jsp页面的charset=UTF-8....

JSP编码以及乱码解决总结

首先,说说JSP/Servlet中的几个编码的作用:1.%@page pageEncoding="UTF-8" %> 作用: * 告诉JSP编译器在将JSP文件编译成Servlet时使用的编码。通常,...

JSP中的编码设置

1. pageEncoding:%@ page pageEncoding="UTF-8"%> jsp页面编码: jsp文件本身的编码   2. contentType: %@ page content...

JSP中有字符编码转换

JSP中有字符编码转换的地方有:   a.jsp 编译。java 应用服务器将根据 JVM 的 file.encoding 值读取 JSP 源文件,并转换为内部   字符编码进行 JSP 编译,生...

JSP中的编码设置

转自:http://blog.csdn.net/xinvsyuan/article/details/3864853 pageEncoding: jsp页面编码: jsp文件本身的编码 co...

有关保存文件时的编码选项与html/jsp页面设定字符编码的配置

分两种情况介绍  注:首先,各位得对一次 请求/响应 的流程有基本认识,即:浏览器发出请求--》服务器接收并处理请求--》将html形式的页面返回(响应)给浏览器,一次 请求/响应 完毕!  ...

MyEclipse更改jsp默认编码

1、简介         默认情况下,新建一个JSP页面默认编码是"ISO8859-1"。可通过如下方式修改页面的默认编码:         Windows---->Preferences----...

jsp或者html页面编码格式更改

问题?在我们使用MyEclipse软件或者其他软件的时候,新建文件内容默认编码通常是ISO等类的编码,我们就希望,当我们打开这个页面的编码格式是我想要的UTF-8格式,这样可以减少很对编程人员的麻烦。...
  • Mr_li13
  • Mr_li13
  • 2015年10月03日 16:57
  • 1323

关于JSP/Servlet字符编码

首先,来说一下HTML和JSP的区别: HTML属于前台,纯展示页面,请求HTML时,容器(如Tomcat)会读取HTML文件的内容,通过socket遵循HTTP协议发送到浏览器; JSP属于后台,请...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JSP网页字符集编码
举报原因:
原因补充:

(最多只允许输入30个字)