- 浏览: 204730 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
zoutuo1986:
翻过的帖子,这篇讲配置最细
solr -
18612536750:
Struts2 标签,取得Map的某一个key对应value值 -
zhangzhihua5:
solr -
xiaguangme:
“capacity才是真正的Entry数组的大小,即真实的En ...
源码阅读之Map和Set -
qiyang199132:
我擦民工 都没人来。。 我来捧场了
JSP 防止重复提交 防止重复刷新 防止后退问题以及处理方式
使用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"
<!--在里边加上这个参数-->
URIEncoding="gb2312"
/>
简单示例程序如下:
<%@ 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
view plaincopy to clipboardprint?
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"));
}
}
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 = new String(key.getBytes("ISO-8859-1", "utf-8"));
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编码,这样就不会出现乱码现象。
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"
<!--在里边加上这个参数-->
URIEncoding="gb2312"
/>
简单示例程序如下:
<%@ 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
view plaincopy to clipboardprint?
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"));
}
}
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 = new String(key.getBytes("ISO-8859-1", "utf-8"));
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编码,这样就不会出现乱码现象。
发表评论
-
java计算任意2个日期内的工作日
2012-10-25 17:23 1305package com.qqw.quanqiuwang.b ... -
深入分析 Java I/O 的工作机制
2012-09-03 16:54 884http://www.oschina.net/question ... -
Java面试中的多线程问题
2012-06-06 11:58 12200.Java 中多线程同步是什么? 在多线程程序下,同步能控 ... -
Java面试122题
2012-06-04 12:45 12831、面向对象的特征有哪些方面 (1).抽象: 抽象就是忽略一个 ... -
Java打印Hello World!
2012-06-04 12:37 1372在下面代码 if()的括号中加入任意代码,使之打印出”Hell ... -
50道Java练习题
2012-06-04 12:35 2019【程序1】 题目:古典 ... -
详细解析Java中抽象类和接口的区别
2012-05-16 13:08 891在Java语言中, abstract cl ... -
JSP 防止重复提交 防止重复刷新 防止后退问题以及处理方式
2011-12-26 09:31 1746一。前言 你在任何一个比较专业的BBS都会看到这样的问题,即使 ... -
遍历Map的3种方法
2011-12-23 13:17 1185集合的一个很重要的操作---遍历,学习了三种遍历方法,三种方法 ... -
JSP request获得完整路径
2011-12-14 13:47 3253方法一: request.getHeader("R ... -
大型高并发高负载网站的系统架构
2011-10-12 10:59 846一个小型的网站,比如 ... -
Java ClassLoader基础知识
2011-09-06 09:53 790Java中一共有四个类加载 ... -
java的classload机制--Tomcat 5
2011-08-12 10:31 998Tomcat是接触最久的应用服务器,同时也被它的classlo ... -
JDK自带的native2ascii工具完全揭密
2011-05-03 17:48 845背景: 在做Java ... -
表单提交中Get和Post方式的区别
2011-04-01 10:38 1055Trackback: http://tb.blog.csdn. ... -
java中的字节流和字符流的存储比较
2011-04-01 10:23 1284用几个常用类型的数据来比较字节流和字符流的区别 int a=5 ... -
java字节流和字符流
2011-04-01 10:22 916Java流操作 对于我们 ... -
生成50个1到100之间的随机数,并且对其中的偶数进行降序排列 然后让他里面的数能够打乱,类似洗牌效果
2011-03-23 10:05 3433List list1 = new ArrayList(); / ... -
java把“20020730”转换为时间格式,并且与当前系统时间比较,然后得到相差的天数
2011-03-23 10:05 1097DateFormat df = new SimpleDateF ... -
java疑惑
2010-12-28 10:06 912温馨提示:如需《java解惑你知多少》的朋友,请到第八节附录下 ...
相关推荐
urlencoder 在Node.js中实现Java Land URLEncoder安装$ npm install urlencoder 例子超级简单: var encoder = require ( 'urlencoder' ) ;encoder . encode ( '哈哈' ) ;执照麻省理工学院
2. **URL编码**:将解码后的字节数组转换回字符串后,需要使用`java.net.URLEncoder.encode()`方法将其编码为URL安全的格式。 3. **构造URL对象**:最后,你可以使用编码后的字符串来创建`java.net.URL`对象,确保...
java.net.URLEncoder.encode(parameters.get(name), "UTF-8")); } params=sb.toString(); }else{ for (String name : parameters.keySet()) { sb.append(name).append("=").append( java.net.URLEncoder....
在Java编程中,`java.net.MalformedURLException`是一个常见的异常,通常在尝试创建或解析URL对象时遇到格式错误时抛出。这个异常表明传递给URL构造器的字符串不符合URL的标准格式。下面,我们将深入探讨这个异常的...
(1)使用java.net.URLEncoder.encode("xxxx",“utf-8")和java.net.URLDecoder.decode("xxxx",“utf-8")。 (2)使用encodeURI(“xxxx”)和java.net.URLDecoder.decode("xxxx",“utf-8")。 这两种转码方式是很好用...
String charEncode = java.net.URLEncoder.encode(“&”); System.out.println(“字符& 转译后的值为:” + charEncode ); //输出:& 所以,解决方法出现了—在传送参数前, 将&全部替换为& eg: var url = ”page...
在发送端,对于需要通过URL传递的中文字符串,使用`java.net.URLEncoder.encode()`方法将其转换成适用于URL的标准格式,该方法默认采用的是UTF-8编码。 ```java String encodedName = java.net.URLEncoder.encode...
`java.net.URLEncoder.encode()`和`java.net.URLDecoder.decode()`方法可以帮助我们完成这项工作。 此外,对于现代Web应用,HTTPS(安全的HTTP)已成为标准。处理HTTPS链接时,Java会自动处理SSL/TLS安全套接层,但...
String strUrl = "http://www.sms1086.com/plan/api/Send.aspx?username=" + URLEncoder.encode(UserName, "GB2312") + "&password=" + java.net.URLEncoder.encode(Password, "GB2312") + "&mobiles=" + java.net....
- 即使是Base64编码后的字符串,也可能包含URL非法字符,需要使用`java.net.URLEncoder.encode()`和`java.net.URLDecoder.decode()`进行URL编码和解码。 5. **示例代码**: ```java import javax.crypto.Cipher;...
在Java中,可以使用`java.net.URLEncoder.encode()`方法对加密字符串进行编码,解码则使用`java.net.URLDecoder.decode()`。 7. **异常处理**:在实际应用中,应更全面地处理可能抛出的异常,包括捕获并记录异常...
2. 使用 URLEncoder.encode() 方法:在 Java 中,可以使用 java.net.URLEncoder.encode() 方法来对字符串进行编码,例如:response.sendRedirect( "err.jsp?msg= "+java.net.URLEncoder.encode( "乱码 "))。 3. ...
在 Java 中,我们可以使用 `java.net.URLEncoder` 的 `encode()` 方法来编码 URL 参数。但是,如果没有显示指定字符集参数,那么 `URLEncoder` 会使用平台的默认字符集作为编码方案。这个默认字符集在不同的平台和...
总之,淘宝URL的编码和解码是通过标准的Java库实现的,主要涉及`java.net.URLEncoder`和`java.net.URLDecoder`两个类。理解这一过程对于开发与淘宝API交互的应用程序至关重要,确保数据在传输过程中不会因为编码问题...
String fileName=java.net.URLEncoder.encode("劳动合同.pdf", "UTF-8"); res.setHeader("Content-Disposition","attachment;filename="+fileName); templatePdf.setOutputEncoding("UTF-8"); ...
在Java中,URL编码是通过`java.net.URLEncoder`类来完成的。这个类提供了`encode`方法,可以将字符串按照特定的字符集(默认为UTF-8)转换成适合URL的格式。URL编码的基本原理是将非ASCII字符转换为其对应的百分号...
通常,我们可以使用`java.net.URLEncoder.encode()`方法来对字符串进行编码。这个方法会将字符串中的非字母数字字符转换为百分号(%)编码,例如将空格转换为"%20"。在示例中,为了应对中文字符,通常还需要指定编码...
解决方法是在发送请求前,使用`Uri.encode()`或`java.net.URLEncoder.encode()`对URL进行编码,确保其符合URL规范。 例如: ```java String url = "http://example.com/?name=张三"; url = Uri.encode(url, "UTF-8...
为避免这个问题,需要在发送请求前使用`java.net.URLEncoder.encode()`对中文参数进行编码,例如`RearshRes.jsp?keywords=" + java.net.URLEncoder.encode(keywords, "UTF-8")`。在接收端,使用`new String(request....
这里使用`java.net.URLEncoder.encode()`方法将文件名编码为URL编码形式,并指定编码格式为`UTF-8`。 ```java response.setHeader("Content-Disposition", "attachment;fileName=" + java.net.URLEncoder.encode...