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æ ç¾å±æ§ã
ä¾å¦ï¼ç½é¡µä¸ä¸åºè¯¥äº§çè¿æ ·çé¾æ¥ï¼
[xhtml] view plain copy
<!-- ä¸æ£ç¡®çåæ³ -->
<a href="/hello/checkUser.html?opt=ä¸æ>使ç¨è 身份éªè¯"</a>
æ£ç¡®çåæ³æ¯ï¼
[xhtml] view plain copy
<!-- 使ç¨UTF-8å符éè¿è¡URLEncodingçç»æ -->
<a href="/hello/checkUser.html?opt=%E4%B8%AD%E6%96%87">使ç¨è 身份éªè¯</a>
为æ¤ï¼æ¹æ¡ä¹ä¸å¯ä»¥å¨JSPç½é¡µä¸ä½¿ç¨èæ¬åè¯è¨è¿è¡URLEncodingå¤çãå¦ï¼
[xhtml] view plain copy
<%@page import="java.net.URLEncoder"%>
<a href="/hello/checkUser.html?opt=<%=URLEncoder.encode("ä¸æ", "UTF-8")%>">使ç¨è 身份éªè¯</a>
request-bodyçç¼ç å¤ç
request-bodyåªæå¨POSTæ交çæ¹å¼ä¸æä¼äº§çãrequest-bodyçç¼ç æ¹å¼ç±è¡¨åçenctypeæ ç¾å±æ§æå®ï¼årequest-lineä¸æ ·ï¼ç¼ç request-bodyæ¶ä½¿ç¨çå符éä¹æ¯å½åç½é¡µå¨æµè§å¨ä¸æ¾ç¤ºæ¶æ使ç¨çå符éãrequest-bodyçç¼ç è¿ç¨ç±å®¢æ·ç«¯æµè§å¨èªå¨å®æï¼ä¸éè¦é¢å¤çç¼ç¨å¤çã
æå¡å¨çå¤ç
ç¸å¯¹äºç¨æ·ç«¯ï¼æå¡å¨ç«¯å¨æ¥æ¶å°HTTP请æ±æ¶æä¾äºä¸¤ç§å¤ç请æ±æ°æ®çæ¹å¼ï¼èªå¨å¤çä¸ä¸å¤çã
æå¡å¨ä¸è¬ä¼èªå¨å¤çapplication/x-www-form-urlencodedç±»åçæ°æ®ï¼å
æ¬request-lineårequest-bodyä¸çæ°æ®ï¼ï¼å°±servletï¼Servletç±»æJSPç½é¡µï¼èè¨ï¼å¯ä»¥éè¿request对象çgetParameter()ægetParameterValues()åå¾è¿äºæ°æ®ã对äºé¤æ¤ä»¥å¤çå
¶å®MIMEç±»åçæ°æ®ï¼HTTPæå¡å¨åæ¯å°å¤ççè¿ç¨ç´æ¥äº¤å°äºä¸HTTP请æ±ç¸å¯¹åºçservletï¼Servletç±»æJSPç½é¡µï¼èº«ä¸ã
ä¾å¦ç¨æ·ç«¯æ以ä¸è¡¨å被æ交ï¼
[xhtml] view plain copy
<form action="checkUser.html?opt=xxx" method="POST">
<input type="text" name="username" value="yyy"/>
<input type="text" name="username" value="zzz"/>
<inupt type="submit" value="submit"/>
</form>
表åæ交æ¶ç»æå¡å¨ç«¯èªå¨å¤çåä¸checkUser.htmlç¸å¯¹åºçservletï¼Servletç±»æJSPç½é¡µï¼å¯ä»¥éè¿ä¸é¢çæ¹å¼åå¾æ°æ®ï¼
[java] view plain copy
String opt = request.getParameter("opt");
String[] users = request.getParameterValues("username");
é»è®¤æ
åµä¸ï¼æå¡å¨å¯¹äºæ¥æ¶å°çapplication/x-www-form-urlencodedç±»åæ°æ®è¿è¡å符é为ISO-8859-1çURLDecodingå¤çï¼ç»è¿å¤çä¹åçå符串å
ç 为ISO-8859-1ã对äºæ²¡æéå ä»»ä½è®¾ç½®çHTTPæå¡å¨èè¨ï¼æ们çservletå¨åå¾æ°æ®ä¹åå¿
é¡»è¿è¡ç¸åºç解ç å¤çï¼çæå
ç 为UTF-16ï¼unicodeï¼çå符串ã
ä¾å¦å¯¹äºç¨æ·ç«¯è¯·æ±æ°æ®ä¸ä»¥UTF-8å符éè¿è¡URLEncodingçæ°æ®ï¼servletéè¦è¿è¡å¦ä¸æ¹å¼ç解ç ï¼
[java] view plain copy
String opt = request.getParameter("opt");
if (opt!=null && !"".equals(opt)) {
opt = new String(opt.getBytes("ISO-8859-1"), "UTF-8");
}
为äºé¿å
è¿ç§é¢å¤çç¼ç /解ç å¤çï¼ä¹å°±æ¯è¯´è®©æå¡å¨äºè§£å°ç¨æ·ç«¯å¨URLEncodingæ¶æ使ç¨çå符éï¼ä»èç´æ¥è¿è¡ç¸åºå符éçURLDecodingå¤çï¼ä¸åçHTTPæå¡å¨æä¾äºä¸åç解å³æ¹æ¡ã
以Tomcat为ä¾ï¼Tomcatèªå¨è§£ç request-lineçå¤çæ¹å¼ç±Tomcatçé
ç½®æ件server.xmlæå®ãå¨server.xmlä¸çConnectoræ ç¾ä¸æä¾äºURIEncodingæ ç¾å±æ§ï¼åªè¦ä¸ºå
¶æå®è§£ç ç¨çå符éï¼Tomcatå°±ä¼èªå¨è§£ç request-lineä¸ç»è¿application/x-www-form-urlencodedç¼ç å¤ççæ°æ®ãä¾å¦ï¼
<Connector connectionTimeout="40000" port="8080" protocol="HTTP/1.1"
URIEncoding="UTF-8" redirectPort="8443"/>
Tomcatèªå¨è§£ç request-bodyçå¤çæ¹å¼æ¯è®¾ç½®requestçcharacterEncodingå¼ãå¦ï¼
request.setCharacterEncoding("UTF-8");
ä½æ¯è¿ä¸æä½å¿ é¡»æåå¨filterä¸å®æï¼å¨servletä¸ä½¿ç¨æ¤æ¹æ³å·²ç»ä¸èµ·ä½ç¨äºãfilterçä¾åå¦ä¸ï¼
[java] view plain copy
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class CharacterEncodingFilter implements Filter {
private String encoding;
public CharacterEncodingFilter() {
encoding = null;
}
public void destroy() {
encoding = null;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding(encoding);
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
encoding = filterConfig.getInitParameter("encoding");
if (encoding == null || "".equals(encoding)) {
encoding = "UTF-8";
}
}
}
æ们å¯ä»¥å¨web.xml使ç¨è¿ä¸ªfilterãweb.xmlçç¸åºé ç½®å¦ä¸ï¼
[xhtml] view plain copy
<filter>
<filter-name>Character Encoding Filter</filter-name>
<filter-class>
CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Character Encoding Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
éè¿ä¸è¿°ä¸¤ç§æ¹å¼çé¢å¤çï¼å¨servletä¸ååºçæ°æ®å¯ä»¥ä¸å¿ è¿è¡ISO-8859-1解ç èç´æ¥ä½¿ç¨ã
å符éçéæ©
å¨å¤çapplication/x-www-form-urlencodedç±»åçæ°æ®è¿ç¨ä¸ï¼éè¦æ³¨æçå¦ä¸ä¸ªé®é¢æ¯å符éçéæ©é®é¢ãå¦ä¸æè¿°ï¼ä¸è®ºæ¯request-lineè¿æ¯request-bodyï¼å
¶URLEncodingæ使ç¨çå符éé½æ¯å½åç½é¡µå¨æµè§å¨ä¸æ¾ç¤ºæ¶æ使ç¨çå符éãèè¿ä¸ªä¿¡æ¯åæ¯HTTPæå¡å¨ç«¯çæHTMLç½é¡µæ¶ï¼å¨HTTPååºä¸æä¾çã
å½HTTPæå¡å¨æ¥æ¶å°ä¸ä¸ªHTTP请æ±æ¶ï¼æå¡å¨æ»æ¯éè¦åç¨æ·ç«¯åéä¸ä¸ªHTTPååºãHTTPååºæ°æ®ä¸HTTP请æ±æ°æ®æ ¼å¼ç¸åï¼åæ ·ç±ä»¥ä¸å 个é¨åç»æï¼
<response-line>
<headers>
<CRLF>
[<response-body><CRLF>]
ä¸é¢æè¿°çæ¯è¯·æ±ä¸ä¸ªHTMLç½é¡µæ°æ®æ¶æå¡å¨çååºä¿¡æ¯ï¼
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=UTF-8
Content-Length: 265
Date: Thu, 17 Dec 2009 05:20:36 GMT
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>test</title>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>
[End]
å
¶ä¸headersçContent-Typeæå®äºæ°æ®æµçæ°æ®æ ¼å¼ä»¥åæ¾ç¤ºç¨çå符éãè¿ä¸ææ å¯ä»¥éè¿ä»¥ä¸å ç§æ¹å¼æå®ï¼
1. HTMLç½é¡µ
å¨HTMLç½é¡µç<head></head>ä¸åå¨å¤ä¸ª<meta/>æ ç¾ï¼å
¶ä¸å¯ä»¥è®¾ç½®Content-Typeãä¾å¦ï¼
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
2. JSPç½é¡µ
JSPç½é¡µä¸ï¼é¤äº<meta/>æ ç¾ä¹å¤ï¼è¿éè¦å¨JSPç½é¡µå¤´é¨è®¾ç½®å¦ä¸ä»£ç ï¼
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
3. Servletç±»
å¦æè¦å¨Servletç±»ä¸éè¿responseåç¨æ·ç«¯ä¼ éHTMLæ°æ®ï¼éè¦å¨ä¼ éåæå®Content-Typeã代ç å¦ä¸ï¼
response.setContentType("text/html;charset=UTF-8");
éè¿ä¸è¿°ä¸ç§æ¹å¼ï¼å¯ä»¥ç¡®ä¿ååºæ°æ®ä¼ éå°ç¨æ·ç«¯æµè§å¨æ¶ï¼æµè§å¨ä½¿ç¨æ£ç¡®è§£ç æ¹å¼åå符éæ¾ç¤ºå ¶å 容ã
ç»æè¯
æ»ä¹ï¼Content-Typeæ¯èç³»ç¨æ·ç«¯ä¸æå¡å¨ç«¯ç纽带ï¼éè¿è¿ä¸ææ ï¼åæ¹å¾ä»¥å¯¹ç¸å ³çæ°æ®è¿è¡æ£ç¡®çç¼ç ä¸è§£ç ãåªè¦äºè§£äºContent-Typeçä½ç¨ä»¥å使ç¨æ¹æ³ï¼ä¹±ç é®é¢å°±ä¼è¿åè解ã
javaweb怎么处理中文乱码问题
采用相同的格式去接收(ISO-8859-1),然后用能解析的编码(utf-8)去转换。这样我们就能得到能兼容中文的格式了。这样处理之后发往前台。注意:发往前台的时候也需要设置一下 resp.setContentType("text\/html;charset=utf-8");\/\/设置页面的字符编码,解决界面显示中文乱码的问题 protected void service(...
一招教你如何解决中文乱码
方法二:借助过滤器处理过滤器是一个在浏览器与web资源之间起桥梁作用的组件,它负责预处理请求和后处理响应。下面详细介绍如何利用过滤器解决乱码问题。过滤器的基本概念:它在请求和响应之间进行过滤,功能众多,包括处理乱码。要使用过滤器,首先创建一个过滤器类,然后有两种配置方式:web.xml文件配置:...
javaweb怎么处理中文乱码
(1)response乱码问题 解决方法:在网上很有效的解决方法是添加:response.setCharacterEncoding("UTF-8");解决不了,后来又搜到一条解决方法是:response.setContentType("text\/html;charset=utf-8");或者 response.setHeader("content-type","text\/html;charset=UTF-8");告诉浏览器用utf-8解析。(...
java web工程里面中文乱码了
java web工程出现中文乱码可以有如下解决方案:1、项目文本文件默认编码:【右击项目】->【Properties】->【Resource】->【Text file encoding】2、文件默认编码:默认使用项目的默认编码:【右击文件】->【Properties】->【Resource】->【Text file encoding】3、 JSP 文件编码:【右击文件】->【Propertie...
java web乱码怎么解决
解决方式:下载commons-fileupload-1.1.1.jar 这个版本的jar已经解决了这些bug。但是取出内容时仍然需要对取出的字符进行从iso8859-1到utf-8转码。已经能得到正常所有汉字以及字符。Java代码关于url请求,接受参数的乱码 url的编码格式,取决于上面所说的URIEncoding=”UTF-8”。如果设定了这个编码格式,...
如何解决Java WEB应用中的乱码问题
如果处理不当就会出现乱码问题。用户端的处理 当用户端发出一个HTTP请求时,一个如下格式的数据将发送给服务器端:<request-line <headers<CRLF[<request-body<CRLF]关于HTTP请求的格式,可以在HTTP协议与HTML表单(再谈GET与POST的区别)中了解更多的内容。在此,request-line与request-body均需要进行相应...
如何解决JavaWeb乱码问题
[java] view plain copy String opt = request.getParameter("opt");if (opt!=null && !"".equals(opt)) { opt = new String(opt.getBytes("ISO-8859-1"), "UTF-8");} 为了避免这种额外的编码\/解码处理,也就是说让服务器了解到用户端在URLEncoding时所使用的字符集,从而直接进行相应...
怎么解决读取properties文件中文乱码
解决Java Web项目中.properties文件中文乱码问题的步骤如下:首先,打开Myeclipse,定位到窗口选项,点击"Preference"。在弹出的设置窗口中,找到并展开"General"部分,然后选择"Content Types"。在右侧的列表中,找到并点击"Text",接着展开,找到"java Properties File"选项。重要的是,你需要将文件的编码...
java WEB项目的jsp页面显示的时候乱码。在别人电脑上都显示的是正常的...
你要右键项目设置编码为UTF-8,jsp乱码的话,你要先把未乱码的代码复制到txt文件,再到项目里重创键jsp页面,再txt里的未乱码的代码复制黏贴即可
java web和html是否可以兼容,以及乱码问题的解析。
可以兼容,乱码问题很容易解决,只要保持如下原则:1. 服务器编码 2. 数据库编码 3. 页面编码 4. servlet编码(这个通常采用自定义过滤器统一过滤即可或者直接采用spring等框架提供的编码设置过滤器)5. java文件、页面文件等(推荐)只要保持上述5个方面编码一致即可(通常utf-8或者gbk、gb2312、gb18030...