永发信息网

如何用Java实现URLEncode

答案:5  悬赏:0  手机版
解决时间 2021-04-05 19:42
如何用Java实现URLEncode
最佳答案
以下是用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实现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的方法是引入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字符串
string encode = urlencoder.encode("gbk编码", "gbk"); system.out.println("乱码" + encode); string decode = urldecoder.decode(encode, "gbk");// gbk解码 system.out.println(decode);
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]); } }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
凡膳红豆薏仁枸杞粉有什么功效啊?
现在应该做什么生意好,在南昌做什么生意好
你知道那里有卖自行车摩擦起电的产品吗?
It was playing computer games that cost th
1mol草酰琥珀酸产生多少ATP
龟饲料可以给鸟吃吗
考事业单位,但是条件上面写着专业工商管理类
鲁东大学函授大专学历学完是发本校的证书么
单选题二十世纪物理学的发展,推动了人类社会
WOW地下城副本半路进去的人通关后有通关奖励
普吉岛悦椿度假村亚洲人多么
小学生爱国诗歌,寻求适合小学三年级孩子朗诵
excel 等于上一单元格是文字就等于1,否则等
某同学为了探究锌、铜、银三种金属的活动顺序
还有没有人见过龙的?在我小的时候见过一次,
推荐资讯
刚睡醒就大脑特别清醒的人智商高吗
行尸走肉,为什么是格伦和魂斗罗亚伯拉罕
成语中含有虎和羊字的成语有什么
带容字的图片谁有啊?
You’d better book the tickets in advance_
茗茶是什么,天福茗茶是什么?
今天和朋友去爬山,刚开始走了会~后来小跑了
首都经贸大学法硕(非法学)怎么样
写一句关心她胃疼体贴关心的话
五台山还愿怎么还
直径60深度20厘米的圆桶。请问可以装多少公斤
社保掌上通买理财产品安全吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?