System.out.println(java.net.URLEncoder.encode("北京", "iso-8859-1"));
System.out.println(java.net.URLEncoder.encode("北京", "gbk"));
System.out.println(java.net.URLEncoder.encode("北京", "utf-8"));=========================打印信息 如下%3F%3F
%B1%B1%BE%A9
%E5%8C%97%E4%BA%AC
谁帮忙解释一下 其中的原理?

解决方案 »

  1.   

    第一个怕是转译不回中文了
    第二个,GBK是双字节编码,一个中文转成2个字节,没什么问题
    第三个,utf-8是多字节编码,中文字我印象中都是三字节,所以,一共有6字节
      

  2.   

    iso-8859-1是欧洲字符编码 是单字节的
    gbk是中文字符编码  是双字节的
    utf-8字符编码是三个字节的
      

  3.   

    首先让我们来看看对于iso-8859-1编码将汉字编码后产生的字节数组:
    byte[] b = "北京".getBytes("iso-8859-1");
    for (int i = 0; i < b.length; i++) {
    System.out.println((int)b[i]);
    }
    输出为:
    63
    63
    这是因为iso-8859-1编码是不能识别汉字的,所以会把他们通通转换为值为63的单字节。
    那么接下来URLEncoder会把这些字节转换为16进制数-3F(63), 同时加上一个%标识。这也是因为初始字符串是
    对于非ASCII字符的原因。
      

  4.   

    接着请教一个问题 
    // 11 22  11.txt 均不存在
    File file = new File("c:/11/22/11.txt");
    if(file.exists() == false){
    file.createNewFile();
    }
    请问一下: 创建文件的时候 必须得 先穿件 目录 , 再创建文件吗?除了自己一步步的创建 有没有办法 一下子把 c:/11/22/11.txt 创建出来??貌似 我c:/23.txt  这样子就很easy 的创建出文件来了
      

  5.   

    还有 创建文件的时候 如何 指定 文件的编码 格式 ??今下午 遇到了一串串问题  因为对file 操作不熟悉 , 不好意思麻烦各位 多多指教
      

  6.   


    噢  明白了 多谢啊。还有谁帮忙解决一下 7楼的问题? 据我所知,  mkdir mkdirs 只能创建目录而 createNewFile  只能创建文件?   除了 自己实现之外, 系统提供一次性创建 “目录 + 文件” 的api吗
      

  7.   

    试试下面的,先创建目录,然后再创建文件。
    package com.csdn.test;import java.io.File;
    import java.io.IOException;public class Test
    {
    public static void main(String[] args)
    {
    File file = new File("E:\\111\\222");
    if (!file.exists())
    {
    try
    {
    file.mkdirs();
    file = new File(file, "111.txt");
    file.createNewFile();
    }
    catch (IOException e)
    {
    e.printStackTrace();
    }
    }
    }
    }
      

  8.   

    自己写一个方法。   if(创建文件失败)
       {
           file.getParent().mkdirs();
           再创建文件一次。
       }