Java中的URLEncoder和URLDecoder类

 转载自:http://www.blogjava.net/kapok/archive/2005/03/09/1855.html

 

为了解决DisplayTag的问题,可能要使用这2个类了,本篇继续分析URL编码的问题

以下内容是我翻译的JDK的帮助。

URLEncoder类:

用于HTML的form中数据编码的类。

这个类包含将字符串转换为application/x-www-form-urlencoded MIME 格式的静态方法.

如果想了解HTML的编码细则,请参考HTML规范。

编码规则如下:

字符"a"-"z","A"-"Z","0"-"9",".","-","*",和"_" 都不被编码,维持原值,

空格" "被转换为加号"+"。

所有其他的字符都被认为是不安全的,首先都根据指定的编码scheme被转换为1个或者多个字节。[凭什么认为其他的字符都是不安全的?看来这些规范的制订者中没有中国人呀!]

然后每个字节都被表示成"%xy"格式的由3个字符组成的字符串,xy是字节的2位16进制的表达(xy is the two-digit hexadecimal representation of the byte),推荐的编码scheme为UTF-8,然而,出于兼容性的考虑,如果没有制定编码的scheme,那么将使用当前操作系统的编码的scheme。

如:如果编码scheme是UTF-8,

"The string ü@foo-bar"将被转换为"The+string+%C3%BC%40foo-bar" 。

因为载UTF-8中字符ü被编码成2个字节C3 (十六进制) 和BC (十六进制), 字符@被编码成一个字节40 (十六进制)。

起始于:JDK1.0

 

这个类共有2个重载方法:

public static String encode(String s,  String enc)  throws UnsupportedEncodingException。起始于:JDK1.4

和即将被废弃的方法:public static String encode(String s)。(因为这个方法的编码的字符集依赖于程序运行的系统的默认的字符集)。

第一个方法的作用是:根据指定的encode scheme 将一个字符串翻译成application/x-www-form-urlencoded格式。

注意: W3C推荐UTF-8。

参数:

s - 将要被翻译的字符串。

enc - 编码用的character。

 返回:翻译后的字符串。

抛出异常: UnsupportedEncodingException - 如果不支持制定的编码

起始于:1.4

另请参考:URLDecoder.decode(java.lang.String, java.lang.String)

 

类URLDecoder的作用和URLEncoder的作用相反,方法类似,这里就不再赘述了。

      如果你想知道你的字符串被编码后的值是什么样,你可以打开www.baidu.com,然后输入你要编码后的数值,然后提交,你可以在地址栏看到你被编码后的字符串,这个方法是Jason告诉我的,呵呵!

如果想解决DisplayTag的问题,就要修改源代码了,下一步就是读源代码,头疼ing......

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值