java中url的编码问题

摘要

在程序中编码问题一直是一个困扰人的问题,往往花费大量的时间去解决出现的编码问题,下面就处理URL编码问题,给出一种解决方案。

    在程序中编码问题一直是一个困扰人的问题,往往花费大量的时间去解决出现的编码问题,下面就处理URL编码问题,给出一种解决方案。

public class UrlTest {
public static void main(String[] args) throws Exception {
String s = "中文";                                               //1. 这里是GBK编码
String s1 = URLEncoder.encode(s, "iso8859-1");  //2. 这里再用iso8859-1编码了一回
System.out.println(s1);
byte[] b = s1.getBytes("iso8859-1");                   //3. 这里又用iso8859-1编码了一回, 这回编成了字节数组
String s3 = new String(b,"utf-8");                       //4. 这里用utf-8解码.
System.out.println(s3);
System.out.println(s1.equals(s3));                       //这里的打印结果怎么可以为true呢. 怎么能一样呢?
}
}

说明 : 一个中文字符串(就是中文二字), 先用iso8859-1编码(编码后还是字符串, 见第2步), 再用iso8859-1编码(编码后为字节数组)  
        最后用utf-8解码成字符串, 怎么变成和第一次打印的结果相同呢? 太费解了吧. 上边那也没用到utf-8啊. 应该解码后是乱七八糟  
        的字符啊, 最后打印结果怎么为true呢?  

String s = "中文";                               //1. 这里是GBK编码
String s1 = URLEncoder.encode(s, "iso8859-1");  //2. 这里再用iso8859-1编码了一回

上面这样的写法,出来的内容肯定会是乱码。

String s = "中文";                              
  
        String s1 = URLEncoder.encode(s, "gbk");  
        System.out.println(s1);  
  
        String s3 = URLDecoder.decode(s1,"gbk");  
        System.out.println(s3);  
        System.out.println(s1.equals(s3));

这样写,出来的才是正确的编码方式。

IT家园
IT家园

网友最新评论 (0)