如何解决Java WEB应用中的乱码问题
展开全部
另一方面在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处理的位置包括:
链接()中的href标签属性;
以POST方式提交的表单(
)中的action标签属性。
例如,网页上不应该产生这样的链接:
<!-- 不正确的写法 --
<a href="/hello/checkUser.html?opt=中文使用者身份验证"</a
正确的写法是:
用户端的处理
当用户端发出一个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处理的位置包括:
链接()中的href标签属性;
以POST方式提交的表单(
)中的action标签属性。
例如,网页上不应该产生这样的链接:
<!-- 不正确的写法 --
<a href="/hello/checkUser.html?opt=中文使用者身份验证"</a
正确的写法是:
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询