百度
360搜索
搜狗搜索

java urlencode,如何用Java实现URLEncode详细介绍

本文目录一览: 如何用Java实现URLEncode

Stringencode=URLEncoder.encode("GBK编码","GBK");System.out.println("乱码"+encode);Stringdecode=URLDecoder.decode(encode,"GBK");//GBK解码System.out.println(decode);
用Java实现URLEncode的方法是引入java.net.URLEncoder包。
java.net.URLDecoder.decode(String s,String enc);
将application/x-www-form-urlencoded字符串转换成普通字符串。
java.net.URLEncoder.decode(String s,String enc);
将普通字符串转换成application/x-www-form-urlencoded字符串
URLEncoder类包含将字符串转换为application/x-www-form-urlencoded MIME 格式的静态方法。
web 设计者面临的众多难题之一便是怎样处理不同操作系统间的差异性。这些差异性能引起URL方面的问题:例如,一些操作系统允许文件名中含有空格符,有些又不允许。大多数操作系统不会认为文件名中含有符号“#”会有什么特殊含义;但是在一个URL中,符号“#”表示该文件名已经结束,后面会紧跟一个 fragment(部分)标识符。其他的特殊字符,非字母数字字符集,它们在URL或另一个操作系统上都有其特殊的含义,表述着相似的问题。为了解决这些问题,我们在URL中使用的字符就必须是一个ASCII字符集的固定字集中的元素,具体如下:
1.大写字母A-Z
2.小写字母a-z
3.数字 0-9
4.标点符 - _ . ! ~ * ' (和 ,)
诸如字符: / & ? @ # ; $ + = 和 %也可以被使用,但是它们各有其特殊的用途,如果一个文件名包括了这些字符( / & ? @ # ; $ + = %),这些字符和所有其他字符就应该被编码。
编码过程非常简单,任何字符只要不是ASCII码数字,字母,或者前面提到的标点符,它们都将被转换成字节形式,每个字节都写成这种形式:一个“%”后面跟着两位16进制的数值。空格是一个特殊情况,因为它们太平常了。它除了被编码成“%20”以外,还能编码为一个“+”。加号(+)本身被编码为%2B。当/ # = & 和?作为名字的一部分来使用时,而不是作为URL部分之间的分隔符来使用时,它们都应该被编码。
WARNING这种策略在存在大量字符集的异构环境中效果不甚理想。例如:在U.S. Windows 系统中, é 被编码为 %E9. 在 U.S. Mac中被编码为%8E。这种不确定性的存在是现存的URI的一个明显的不足。所以在将来URI的规范当中应该通过国际资源标识符(IRIs)进行改善。

如何用Java实现URLEncode

String mytext = java.net.URLEncoder.encode("中国", "utf-8");
String mytext2 = java.net.URLDecoder.decode(mytext, "utf-8");
这两条语句在同一个页面中的话,得到的结果是:
mytext: %E4%B8%AD%E5%9B%BD
mytex2: 中国
String zhongguo=new String(request.getParameter("zhongguo").getBytes("iso8859_1"));
zhongguo=java.net.URLDecoder.decode(zhongguo,"utf-8");

如何用Java实现URLEncode

String encode = URLEncoder.encode("GBK编码", "GBK");
System.out.println("乱码" + encode);
String decode = URLDecoder.decode(encode, "GBK");// GBK解码
System.out.println(decode);
无需用Java实现URLEncode,jdk有已经实现了。
用法如下:
String urlStr = java.net.URLEncoder.encode("hello,百度", "GBK");
输出urlStr:%C8%CE%BA%F0%B2%F0%B0%A1
String keyWord = java.net.URLDecoder.decode("%C8%CE%BA%F0%B2%F0%B0%A1
", "GBK");
输出keyWord:hello,百度
Java使用查表法实现一下urlEncode(RFC1738):
public final static String[] encodeTable = new String[2^8];static{for(int i=0;i<256;i++){if(i>='0' && i<='9' || i>='a'&&i<='z' || i>='A' && i<='Z' ||| i=='-' || i=='_' || i=='.'){encodeTable[i] = (char)i + "";}else{encodeTable[i] = "%" + String.format("%02x",i).toUpperCase();}}}public String urlEncode(final String sourceStr){final StringBuilder sb = new StringBuilder();for(int i=0;i
<sourcestr.length;i++){sb.append(encodetable[sourcestr.charat(i) && 0xff]);}}
Java由哪几个方面组成?

Java编程语言,即语法。

Java文件格式,即各种文件夹、文件的后缀。

Java虚拟机(JVM),即处理*.class文件的解释器。

Java应用程序接口(Java API)。

什么是urlencode编码

不是很理解你的意思
从HTTP协议来讲, 一个标准的URL是有固定的编码方式的,它只能包含固定的字符集
比如你输入一个网址
http://www.baidu.com/s?wd=我&cl=3, 在访问这个网址的时候
网络上传输的时候,‘我’这字会变成%CE%D2 这种编码
网站收到你这个网址的时候,再把%CE%D2 转换成 ‘我’字才能理解你这个网址的意思
urlencode编码:就是将字符串以URL编码,一种编码方式,主要为了解决url中中文乱码问题。
例如:
String mytext = java.net.URLEncoder.encode("中国", "utf-8"); //urlencode编码
String mytext2 = java.net.URLDecoder.decode(mytext, "utf-8"); //urlencode解码

这两条语句在同一个页面中的话,得到的结果是:
mytext: %E4%B8%AD%E5%9B%BD
mytex2: 中国

java为什么urlencode后多出%ef%bb%bf

String encode = URLEncoder.encode("GBK编码", "GBK");
System.out.println("乱码" + encode);
String decode = URLDecoder.decode(encode, "GBK");// GBK解码
System.out.println(decode);

Urlencode问题

1、Base64加密后的数据,如果包含加号,通过http传到后端后会出现解析异常。

2、后端的数据经过urlencode传给前端,前端拿到的数据是编译过的;
而前端把经过urlencode的数据传给后端,后端会自动将数据进行decode解析。

3、后端Java对参数进行urlencode和decode

4、前端对参数进行urlencode和decode

java web 请求url形式理解

http://192.88.6.52:8080/sso/login?service=http%3A%2F%2F127.0.0.1%3A8080%2Fbis%2Flogin%2Flogin%21main.action
http://192.88.6.52:8080/sso/login 访问请求的地址
service=http%3A%2F%2F127.0.0.1%3A8080%2Fbis%2Flogin%2Flogin%21main.action service为参数而已 只是参数比较长 然后又unicode编码而已
url会经过unicode编码,你得转换.,不过是自动的%3A就是:
%2F是/
其他的自己想下就懂了。
http://192.88.6.52:8080/sso/login?service=http%3A%2F%2F127.0.0.1%3A8080%2Fbis%2Flogin%2Flogin%21main.action
首先你可以这样理解
xxxx.login?后面的是请求的参数和值
其中service是参数名
=号后面的这一串:http%3A%2F%2F127.0.0.1%3A8080%2Fbis%2Flogin%2Flogin%21main.action是值,其中这个值是被UrlEncode过的,什么是URLENCODE你可以百度一下.

java 怎么接收http请求

HttpURLConnection mHttpURLConnection = null;
URL mUrl = null;
InputStream inputStream = null;
try {
String url = UrlEncode(mFileType.getStrUrl(), "UTF-8");

//mUrl = new URL(mFileType.getStrUrl());
mUrl = new URL(url);
mHttpURLConnection = (HttpURLConnection) mUrl.openConnection();
mHttpURLConnection.setAllowUserInteraction(true);
mHttpURLConnection.setRequestMethod("GET");
mHttpURLConnection.setRequestProperty("Range", "bytes=" + startPos
+ "-" + endPos);
mHttpURLConnection.setRequestProperty("Connection", "Keep-Alive");
int responseCode = mHttpURLConnection.getResponseCode();
long length = mHttpURLConnection.getContentLength();
// 判断请求是否成功处理
if (responseCode == HttpStatus.SC_OK||responseCode == HttpStatus.SC_PARTIAL_CONTENT) {
inputStream = mHttpURLConnection.getInputStream();
}catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
你需要搭建一个服务器,才能接受http请求。
request.getAttribute("键名");
Java 中的servlet

阅读更多 >>>  java编程是什么意思

get和post的区别并讲解到urlencode和乱码问题

form有2中方法把数据提交给服务器,get和post,分别说下吧。
(一)get提交
1.首先说下客户端(浏览器)的form表单用get方法是如何将数据编码后提交给服务器端的吧。
对于get方法来说,都是把数据串联在请求的url后面作为参数,如:http://localhost:8080/servlet?msg=abc
(很常见的一个乱码问题就要出现了,如果url中出现中文或其它特殊字符的话,如:http://localhost:8080//servlet?msg=杭州,服务器端容易得到乱码),url拼接完成后,浏览器会对url进行URL encode,然后发送给服务器,URL encode的过程就是把部分url做为字符,按照某种编码方式(如:utf-8,gbk等)编码成二进制的字节码,然后每个字节用一个包含3个字符的字 符串 "%xy" 表示,其中xy为该字节的两位十六进制表示形式。我这里说的可能不清楚,具体介绍可以看下java.net.URLEncoder类的介绍在这里。了解了 URL encode的过程,我们能看到2个很重要的问题,第一:需要URL encode的字符一般都是非ASCII的字符(笼统的讲),再通俗的讲就是除了英文字母以外的文字(如:中文,日文等)都要进行URL encode,所以对于我们来说,都是英文字母的url不会出现服务器得到乱码问题,出现乱码都是url里面带了中文或特殊字符造成的;第二:URL encode到底按照那种编码方式对字符编码?这里就是浏览器的事情了,而且不同的浏览器有不同的做法,中文版的浏览器一般会默认的使用GBK,通过设置 浏览器也可以使用UTF-8,可能不同的用户就有不同的浏览器设置,也就造成不同的编码方式,所以很多网站的做法都是先把url里面的中文或特殊字符用 javascript做URL encode,然后再拼接url提交数据,也就是替浏览器做了URL encode,好处就是网站可以统一get方法提交数据的编码方式。 完成了URL encode,那么现在的url就成了ASCII范围内的字符了,然后以iso-8859-1的编码方式转换成二进制随着请求头一起发送出去。这里想多说 几句的是,对于get方法来说,没有请求实体,含有数据的url都在请求头里面,之所以用URL encode,我个人觉的原因是:对于请求头来说最终都是要用iso-8859-1编码方式编码成二进制的101010.....的纯数据在互联网上传 送,如果直接将含有中文等特殊字符做iso-8859-1编码会丢失信息,所以先做URL encode是有必要的。
2。服务器端(tomcat)是如何将数据获取到进行解码的。
第一步是先把数据用iso-8859-1进行解码,对于get方法来说,tomcat获取数据的是ASCII范围内的请求头字符,其中的请求url里面带 有参数数据,如果参数中有中文等特殊字符,那么目前还是URL encode后的%XY状态,先停下,我们先说下开发人员一般获取数据的过程。通常大家都是request.getParameter("name")获 取参数数据,我们在request对象或得的数据都是经过解码过的,而解码过程中程序里是无法指定,这里要说下,有很多新手说用 request.setCharacterEncoding("字符集")可以指定解码方式,其实是不可以的,看servlet的官方API说明有对此方 法的解释:Overrides the name of the character encoding used in the body of this request. This method must be called prior to reading request parameters or reading input using getReader().可以看出对于get方法他是无能为力的。那么到底用什么编码方式解码数据的呢,这是tomcat的事情了,默认缺省用的是 iso-8859-1,这样我们就能找到为什么get请求带中文参数为什么在服务器端得到乱码了,原因是在客户端一般都是用UTF-8或GBK对数据 URL encode,这里用iso-8859-1方式URL decoder显然不行,在程序里我们可以直接
Java代码
1. new String(request.getParameter("name").getBytes("iso-8859-1"),"客户端指定的URL encode编码方式")
还原回字节码,然后用正确的方式解码数据,网上的文章通常是在tomcat里面做个配置
Xml代码
1.

这样是让tomcat在获取数据后用指定的方式URL decoder,URL decoder的介绍在这里
(二)post提交
1.客户端(浏览器)的form表单用post方法是如何将数据编码后提交给服务器端的。
在post方法里所要传送的数据也要URL encode,那么他是用什么编码方式的呢?
在form所在的html文件里如果有段
,那么post就会用此处指定的编码方式编码。一般大家都认为这段代码是为了让浏览器知道用 什么字符集来对网页解释,所以网站都会把它放在html代码的最前端,尽量不出现乱码,其实它还有个作用就是指定form表单的post方法提交数据的 URL encode编码方式。从这里可以看出对于get方法来数,浏览器对数据的URL encode的编码方式是有浏览器设置来决定,(可以用js做统一指定),而post方法,开发人员可以指定。
2。服务器端(tomcat)是如何将数据获取到进行解码的。
如果用tomcat默认缺省设置,也没做过滤器等编码设置,那么他也是用iso-8859-1解码的,但是request.setCharacterEncoding("字符集")可以派上用场。
我发现上面说的tomcat所做的事情前提都是在请求头里没有指定编码方式,如果请求头里指定了编码方式将按照这种方式编码。

java http post中,使用urlencode,发送经过base64编码的字符串,+号问题怎么处理呢?

有的,你可以看看BigInteger这个类,能构建出不错的大数进行存储

网站数据信息

"java urlencode,如何用Java实现URLEncode"浏览人数已经达到18次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:java urlencode,如何用Java实现URLEncode的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!