针对你这个问题,我搜索了一下答案,我推荐你一篇博文吧,大概的意思是先获得字节流,然后用这个字节流转化为你想要的编码格式http://blog.csdn.net/zxy838279821/article/details/7536223

解决方案 »

  1.   

    这个你可以深入的理解一下:http://www.zhihu.com/question/20361462
      

  2.   

    public static void main(String[] args) {
    StringBuffer buffer=new StringBuffer();
    try {
    FileInputStream fis=new FileInputStream("test.txt");
    InputStreamReader isr=new InputStreamReader(fis,"UTF-8");
    BufferedReader br=new BufferedReader(isr);
    String line=null;
    while ((line=br.readLine())!=null) {
    buffer.append(line);
    buffer.append("\r\n");
    }
    br.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    try {
    FileOutputStream fos=new FileOutputStream("test1.txt");
    OutputStreamWriter osw=new OutputStreamWriter(fos);
    osw.write(buffer.toString());
    osw.flush();
    osw.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
      

  3.   

    不好意思,刚才没测试就发代码了
    public static void main(String[] args) {
    StringBuffer buffer=new StringBuffer();
    try {
    FileInputStream fis=new FileInputStream("test.txt");
    InputStreamReader isr=new InputStreamReader(fis,"UTF-8");
    BufferedReader br=new BufferedReader(isr);
    String line=null;
    br.skip(1);
    while ((line=br.readLine())!=null) {
    buffer.append(line);
    buffer.append("\r\n");
    }
    buffer.delete(buffer.length()-2,buffer.length());
    br.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    System.out.println(buffer);
    try {
    FileOutputStream fos=new FileOutputStream("test1.txt");
    OutputStreamWriter osw=new OutputStreamWriter(fos);
    osw.write(buffer.toString());
    osw.flush();
    osw.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
      

  4.   

    jdk有一个关于UTF-8的bug
    所以加了一句 br.skip(1);
    see
    this
    and
    this
      

  5.   

    要是我来做的话,把原文件读取到内存,在建一个同名的ANSI编码文件,最后写入即可