如何解决Java WEB应用中的乱码问题
本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。
当我们通过Java程序员的视角来浏览网页时会发现:一方面用户端浏览器(IE或Firefox)以表单或链接的方式提交HTTP请求同时又处理HTTP服务器发出的响应数据,将其中的数据流(HTML数据或其它种类的数据)以适当的方式展示给使用者浏览。另一方面在Java WEB应用服务器上,一个HTTP请求可以由一个Servlet类或一个JSP网页来处理,请求数据来自于HttpServletRequest,响应数据发送至HttpServletResponse。通过用户端提交请求、服务器端处理请求、服务器端返回响应数据以及用户端处理响应数据四个步骤组成了一次HTTP请求的全部过程。数据在这四个重要环节中进行传输时,都将以指定的编码方式进行编码或解码。如果处理不当就会出现乱码问题。
用户端的处理
当用户端发出一个HTTP请求时,一个如下格式的数据将发送给服务器端:
<request-line>
<headers>
<CRLF>
[<request-body><CRLF>]
关于HTTP请求的格式,可以在HTTP协议与HTML表单(再谈GET与POST的区别)中了解更多的内容。
在此,request-line与request-body均需要进行相应的编码处理。
request-line的编码处理
request-line中的URL部分必须以application/x-www-form-urlencoded方式编码。编码时使用的字符集是当前网页在浏览器上显示时所使用的字符集。
JDK中专门有两个类处理application/x-www-form-urlencoded类型的数据,它们是URLEncoder及URLDecoder。当网页上的数据需要手动进行URLEncoding处理时,可使用URLEncoder类完成编码工作。需要手动进行URLEncoding处理的位置包括:
链接(<a></a>)中的href标签属性;
以POST方式提交的表单(<form></form>)中的action标签属性。
例如,网页上不应该产生这样的链接:
<!-- 不正确的写法 -->
<a href="/hello/checkUser.html?opt=中文>使用者身份验证"</a>
正确的写法是:
<!-- 使用UTF-8字符集进行URLEncoding的结果 -->
<a href="/hello/checkUser.html?opt=%E4%B8%AD%E6%96%87">使用者身份验证</a>
为此,方案之一可以在JSP网页上使用脚本化语言进行URLEncoding处理。如:
<%@page import="java.net.URLEncoder"%>
<a href="/hello/checkUser.html?opt=<%=URLEncoder.encode("中文", "UTF-8")%>">使用者身份验证</a
相关文档:
1.what is oracle.
2.what is major differenece oracle8i and oracle9i.
4.tell me some thing ur self.
5.please tell me about oops.
6.what is single inheritance.
7.what is multiple inheritance.
8.can java support multiple inheritance.
9.what is interface.
10.what is differenec between abstract c ......
1.用new String(request.getParameter("name").getBytes("ISO-8859-1"),"GBK") 方式进行转码
2.设置tomcat:在tomcat的conf目录下找到server.xml文件,在Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
......
java.lang.NullPointerException
这个异常大家肯定都经常遇到,异常的解释是 "程序遇上了空指针 ",简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等。对数组操作中出现空指针,很多情况下是一些刚开始学习编程 ......
构造方法摘要
Object()
方法摘要
protected Object clone()
创建并返回此对象的一个副本。
boolean equals(Object obj)
&n ......