菜单

JSP页面编码问题

2018年11月15日 - jQuery

 1. JSP页面蒙,二处在之字符编码有何区别

 1 <%@ page language="java" contentType="text/html; charset=gb2312"
 2     pageEncoding="utf-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10     <b>hello world , 你好,世界!</b>
11 </body>
12 </html>

1、<%@ page contentType=”text/html;charset=UTF-8″ %>

若果上面就段简单的JSP代码,里面有三单地方对编码进行了设置:

举凡服务器端java程序运行时之出口编码,即服务器端以怎样的编码为客户端输出HTML时行使的编码.

 1. contentType 中的 charset 

2、meta http-equiv=”Content-Type” content=”text/html; charset=utf-8“

 2. pageEncoding 

大凡指客户端浏览器因为怎样的编码来展示网页,指导浏览器解析服务器端传入的HTML流.
同时其还有一个打算,指导其付出表单的时段下啊编码传入request.

 3. html meta标记中之charset 

request.setCharacterEncoding(“gbk”)//把页面参数按gbk编码后传出服务器端

这就是说就三独还以啊地方起及啊打算,

同理:

 
 在说编码之前率先简单描述一下JSP页面执行的原理,当一个JSP页面编写成功后待以欠页面发布暨对应的服务器例如tomcat上,整个发布过程由于包括个别个小之步骤,一、将JSP翻译成Servlet(一个Java文件)。二、JSP引擎(tomcat)调用Java编译器将Servlet编译成.class文件并保留至确定之目中。三、当用户在地点栏输入相应JSP页面的地点时,JSP引擎调用Java虚拟机来说明执行.class文件,并转于客户端的答复信息。

  2.
在servlet中用response的#3#种植设置输出内容之编码方式,有以下三独艺术:

脚进入正题,编码

1、response.setCharacterEncoding(“UTF-8”)

 
首先讲pageEncoding,我们掌握各个一个文档或者页面都起照应的编码,如果无提供编码格式,程序是力不从心将一系列的二进制翻译出的。JSP也同样,那么是pageEncodinig就是点名这个JSP文件被内容的编码格式,这个编码格式告诉JSP引擎,我此JSP是因此什么编码的,你可以使啊解码格式来读取我之文档,并翻译成对应的Servlet。这个Servlet的格式是JSP引擎的规定之utf-8。同样Servlet编译成的.class文件也是JSP引擎规定的utf-8格式。至此pageEncoding的重任完成。如果想看这pageEncoding是否设置科学可以查看JSP相应的Servlet中代码是否发生乱码,如果出代表pageEncoding没有设置科学。常用之编码有iso-8859-1(英文字符)、utf-8(全世界通用)、gb2312(国标,中文编码,同样支持英文)、gbk(gb2312的增高版,支持之字符更多,与gb2312相对于utf-8占用空间比较生)。

2、response.setContentType(“text/html;charset=UTF-8”)

 
 在JSP页面指令中之charset是当客户端请求JSP页面时,.class文件返回页面的编码格式,假如页面中含中文,而且pageEncoding设置是,那么当Servlet中文会正常显示,但是倘若charset设置的凡英文编码例如iso-8859-1,Servlet中的华语输入到客户端浏览器就是会冒出乱码。

       相当于服务端解析:<%@   page   contentType="text/html;charset=UTF-8"   %> 

   最后一个凡是html
meta标签中的,这个标签效应与JSP页面指令charset是平的,该标签在JSP页面中不起作用,至少我测试的是不起作用的,如果生照应页面指令则随页面指令编码,如果没默认utf-8,该标签不起作用,但是在一般的html中凡自作用的。

3、response.setLocale(new java.util.Locale(“zh”,”CN”))

自掌握之虽这样多矣

  
下面来分析一下老三栽办法之间的不同之处:

 今天一个同室咨询我为什么他的型连续出现乱码,但是本人将品种于自己的计算机上运行就不曾问题,在外的电脑上,任自己如何设置pageEncoding
,charset 都行不通,最后只好以new
String()进行转码。回来后仔细看了一晃,原来由出现在tomcat配置高达,据说是以新版tomcat的题材,这个没有测试了,新本子的tomcat(5.x以上)中采取get传递参数如果不布置server.xml文件就只能以new
String()进行转码了。配置方式

先是种植方法只能用来设置out输出流中所采取的编码,但是他的优先权最高,可以覆盖后少种方式被之安;

1. 

其次中智就是可以设置out输出流中字符的编码方式,也可设置浏览器接收到这些字符后因为什么编码方式来解码,它的优先权低于第一栽艺术,但不止第三种植方式;

 

其三栽办法吧不得不用来设置out输出流中字符的编码方式,但是它们的优先权最低,在都为此前少栽方法有设置了编码方式以后,它就是给掩要不起作用了。

 

图片 1

这种艺术配置以后当不需要配置request编码就可正常获取中文。

2. 图片 2

这种办法设置后得以网页遭到安request的编码格式。

相关文章

标签:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图