转自:
http://blog.csdn.net/wjtzlj/article/details/4128790
使用java.net.URLEncoder.encode()可以对要传递的中文进行编码
a.在传参数之前先把参数进行转码:
java.net.URLEncoder.encode(param);
取值时用语句
java.net.URLDecoder.decode(param);
再转回中文
b.在你的Tomcat目录-->conf目录-->server.xml里找出这段:
<Connector
port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true"
[b]<!--在里边加上这个参数-->
URIEncoding="gb2312"[/b] />
简单示例程序如下:
<%@ page contentType="text/html;charset=gb2312" %>
<a href="ds.jsp?url=<%=java.net.URLEncoder.encode("编码的是这里","GB2312")%>">点击这里</a>
<%
//request.setCharacterEncoding("GBK");
if(request.getParameter("url")!=null)
{
str=request.getParameter("url");
str=java.net.URLDecoder.decode(str,"GB2312");
str=new String(str.getBytes("ISO-8859-1"));
out.print(str);
}
%>
JSP经过上面的处理之后,最后输出的HTML页面联结已经可以正常向服务器传递中文参数了。
下面我们阐述一下Servlet里怎么接收/解析中文参数。
对于
<a href="/someServlet?key=%E4%BD%A0%E5%A5%BD">你好</a>
之类的联结,我们可以用下面的servlet来解析传递过来的中文参数。
GetAsiaCharServlet.java
import java.io.IOException;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class GetAsiaCharServlet extends HttpServlet {
@Override
//redir?key=xxxx
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
String key = req.getParameter("key");
key = <SPAN style="COLOR: #ff0000">new String(key.getBytes("ISO-8859-1", "utf-8"))</SPAN>;
System.out.println(keyword);
//...
//重定向处理
//res.sendRedirect("http://www.google.com/search?q="+URLEncoder.encode(key, "utf-8"));
}
}
我们注意到使用
req.getParameter("key")
得到参数后,还使用了
new String(key.getBytes("ISO-8859-1", "utf-8"))
把ISO-8859-1字符集形式转换成UTF-8形式。
为什么呢?因为iso-8859-1是Java中网络传输使用的标准字符集,
req.getParameter("key")
得到的还是ISO-8859-1字符集,所以要转换一下才不会是乱码。
最后,顺便提一下,采用servlet重定向时,也需要对包含中文文字的参数做特殊处理。
例如,SERVLET从HTML页面的联结接受参数,然后重新定向到Google搜索。
则可以在上面的GetAsiaCharServlet里加上如下处理:
res.sendRedirect("http://www.google.com/search?q="+URLEncoder.encode(key, "utf-8"));
也就是说,需要把参数取出来,转换,再重新使用URLEncoder.encode编码,这样就不会出现乱码现象。
分享到:
相关推荐
在发送端,对于需要通过URL传递的中文字符串,使用`java.net.URLEncoder.encode()`方法将其转换成适用于URL的标准格式,该方法默认采用的是UTF-8编码。 ```java String encodedName = java.net.URLEncoder.encode...
2. **URL编码**:在传递中文参数前,使用Java的`java.net.URLEncoder.encode()`方法对中文参数进行编码,指定编码格式为UTF-8。例如:`URLEncoder.encode("中文参数", "UTF-8")`。 3. **URL解码**:在服务器端接收...
五、jsp 动作指令传递中文乱码解决 在使用 jsp 动作指令(如 jsp:forward、jsp:include)时,只需在原页面中设置 request 的字符编码格式为当前网页编码即可。例如: 原页面 param.jsp 代码(设网页编码为 gb2312...
JSP 对 URL 链接中的中文乱码处理方法总结 JSP 对 URL 链接中的中文乱码处理方法总结是指在 ...解决 JSP 对 URL 链接中的中文乱码问题需要考虑到浏览器、服务器和编码方式的差异,选择合适的方法来避免中文乱码问题。
为避免这个问题,需要在发送请求前使用`java.net.URLEncoder.encode()`对中文参数进行编码,例如`RearshRes.jsp?keywords=" + java.net.URLEncoder.encode(keywords, "UTF-8")`。在接收端,使用`new String(request....
在进行Web开发时,经常会遇到中文字符编码的问题,尤其是在使用JavaServer Pages(JSP)技术时。本篇文章将详细介绍如何解决JSP页面提交时出现的乱码问题,包括GET请求和POST请求两种常见的情况。 #### 一、问题...
Java中的`java.net.URLEncoder.encode()`方法用于将字符串按照UTF-8编码格式转换为适合URL的格式。在`a.jsp`中,我们看到`str_test`变量被编码并插入到URL中。 2. **字符编码问题**:在Web应用中,浏览器、服务器...
在Java中,可以通过使用`java.net.URLEncoder`类对中文参数进行编码,然后再传递到服务器端,从而避免乱码问题的发生。 1. **客户端编码处理**: 客户端在提交含有中文参数的请求前,可以先使用`URLEncoder.encode...
在JavaServer Pages (JSP) 开发中,页面间的参数传递是常见的操作,尤其是在处理包含汉字的参数时,由于编码问题可能会导致乱码。本文主要介绍如何在JSP中正确地进行汉字参数的转码与解码,确保数据在页面间传递时...
String encodedParam = java.net.URLEncoder.encode("中文", "UTF-8"); ``` 2. **POST请求** POST请求中的乱码问题相对较少,通常可以通过设置表单提交的编码格式来解决。例如,在HTML表单中指定`enctype`属性...
在传参的 jsp 对中文进行编码可以使用 java.net.URLEncoder.encode 函数,在接受的 jsp 对中文进行转码可以使用 URLDecoder.decode 函数。 四、Java 与数据库之间的乱码 大部分数据库都支持以 unicode 编码方式,...
- 当在HTML中传递含有中文的参数时,可以使用`URLEncoder.encode()`方法进行编码。 - 示例代码: ```html <a href="servlet/AdminServlet?flag=<%=java.net.URLEncoder.encode("中文", "UTF-8")%>">点击 ``` ...
当使用`jsp:forward`或`jsp:include`等JSP动作指令传递中文参数时,应在原页面中设置`request`对象的字符编码,确保中文参数的正确传递。 例如,在`param.jsp`中: ```java ;charset=UTF-8" %> <% request.set...
2. 使用 URLEncoder.encode() 方法:在 Java 中,可以使用 java.net.URLEncoder.encode() 方法来对字符串进行编码,例如:response.sendRedirect( "err.jsp?msg= "+java.net.URLEncoder.encode( "乱码 "))。 3. ...
接收端接收到编码后的参数后,需要进行解码处理才能正确显示中文字符。可以使用`URLDecoder.decode()`方法来完成解码操作。 **示例代码:** ```java String decodedContent = java.net.URLDecoder.decode(request....
在编码时,使用`URLEncoder.encode()`指定正确的字符编码(如UTF-8),并在接收到参数后,先按照服务器默认编码(如ISO-8859-1)获取字节,然后用目标编码(如UTF-8)解码。这样可以确保中文字符在URL传递过程中不...
keywords=" + java.net.URLEncoder.encode(keywords, "UTF-8")`。 2. 在接收端解码参数,如`String keywords = new String(request.getParameter("keywords").getBytes("ISO-8859-1"), "UTF-8")`。 #### 三、...
java中文乱码处理 Java中的中文乱码问题是非常常见的,特别是在JSP页面和表单提交中。...Java中的中文乱码问题可以通过设置正确的字符编码、使用Filter改变参数的编码方式、使用URL编码等方法来解决。
总结,解决Java Web中的URL中文乱码问题,关键在于发送请求时使用`URLEncoder.encode()`进行编码,以及在接收请求时设置正确的字符编码,如在JSP页面和Struts2 Action中。同时,可以通过配置过滤器确保整个应用程序...
### 知识点详解:JSP页面中文参数传递GET与POST...以上所述的知识点涵盖了JSP页面中文参数传递的主要挑战及解决方案,遵循这些指导原则,可以有效避免因字符编码问题导致的数据乱码,提升Web应用的健壮性和用户体验。