java URLEncoder 中特殊处理

【原文link】http://www.blogjava.net/ann/archive/2008/10/07/232875.html

 

 

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......




特殊特殊字符的含义    
  ————————————————————————————    
  字符   特殊字符的含义   URL编码    
  #   用来标志特定的文档位置   %23    
  %   对特殊字符进行编码   %25    
  &   分隔不同的变量值对   %26    
  +   在变量值中表示空格   %2B    
  /   表示目录路径   %2F    
  =   用来连接键和值   %3D    
  ?   表示查询字符串的开始   %3F 

你可能感兴趣的:(java,jdk,html,String,Scheme,character)