比如说一个表单,一个输入框写的:“无标题”,提交后在地址栏看到的是“%CE%DE%B1%EA%CC%E2”

解决方案 »

  1.   

    java.nio.charset 包中有三个类帮助进行这种映射:Charset、CharsetEncoder 和 CharsetDecoder。这些类相互配合,这样您就可以先采用一种映射,然后将其转换为另一种映射。在从另一种映射转换为 Java 映射(Unicode)时,您可以使用解码器(decoder)。然后,如果您需要从 Java 映射(Unicode)再转换为另一种映射(或转换回原来那种映射)时,您可以使用编码器(encoder)。您无法用 java.nio.charset 包在两种非 Unicode 格式之间直接转换,但您可以通过一种中间的 Unicode 格式在两种非 Unicode 格式间进行转换在得到一个解码器或编码器之前,您需要获得用于特定映射的 Charset。例如,US-ASCII 是用于 7 位 ASCII 字符集的映射的名称。您只需象下面这样把该名称传递到 Charset 的 forName() 方法中即可: Charset charset = 
      Charset.forName("US-ASCII");一旦有了 Charset,只需按如下所示请求 CharsetDecoder 和 CharsetEncoder: 
    CharsetDecoder decoder =
      charset.newDecoder();
    CharsetEncoder encoder =  
      charset.newEncoder(); 
    有了解码器和编码器后,您就可以在不同的字符集之间进行转换了,如下所示: 
      ByteBuffer bytes = ...;
      CharBuffer chars = decoder.decode(bytes);
      bytes = encoder.encode(chars); 
    当然,如果不确定哪些字符集可用,您需要用下面的语句来询问: 
    SortedMap map = 
       Charset.availableCharsets(); 
     
      

  2.   

    “test.jsp?strpara="+java.net.URLEncoder.encode("中文"))