我有一个中文的txt文件,采用UTF-8编码。
我使用EditPlus打开 - Save As -选择编码选择ANSI编码存储,文件里面的中文不会出现乱码。如果我用Java代码来实现,请问如何实现?
最好能直接给一个实例,谢谢。

解决方案 »

  1.   


    public static void translateFile(File source, String sourceEncoding, File dest, String destEncoding) throws Exception {
    String encoding = detectText(source);
    if(!sourceEncoding.equals(encoding))
    return;
    BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(source), sourceEncoding));
    BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(dest), destEncoding));
    char[] chars = new char[1000];
    int i;
    while((i = reader.read(chars)) != -1) {
    writer.write(chars, 0, i);
    }
    reader.close();
    writer.close();
    }上面的方法参数不用说明了吧。。完全可运行
      

  2.   

    上面的UTF-8转换GBK是没有问题的。
    我UTF-8转换成US-ASCII就有问题了,但是在EditPlus里面是没有问题的。
    请问类似这种是怎么实现的?
      

  3.   

    US-ASCII都不包括中文的编码,转换应该是有问题的。你指的在EditPlus里面没有问题,你有没有查看过保存之后的文件编码,是否真的是ANSI?
      

  4.   

    中文字符不可能被保存为ansi(256个字符)或者ascii(128个字符)编码他们是西欧字符编码
      

  5.   

    信息丢失了白,这个要看文本工具是怎么做的,要想知道,拿生成的文件用个hex编辑器看看
      

  6.   

    UTF-8:
    EFBBBFE4BDA0E5A5BDASNI
    C4E3BAC3文件里面都保存的是:“你好”
    ASNI的内容是丢失了,但是为什么它还是能显示“你好”?
    我用Java如何把C4E3BAC3转换成"你好"?
      

  7.   

    C4E3BAC3 是 GBK 编码?
      

  8.   

    查了一下:
    C4E3是“你”字的GBK编码。
    BAC3是“好”字的GBK编码。
    根据wikepedia上的说法,我对ANSI的理解有错,ANSI应该是一个泛指当前机器标准编码(Windows的code page),用中文的应该就是GBK,如果用的是英文的就是CP1521。
    http://www.knowsky.com/resource/gb2312tbl.htm
    http://en.wikipedia.org/wiki/Code_page#Windows_.28ANSI.29_code_pages
      

  9.   

    C4E3BAC3这是GBK编码
    说明EditPlus保存为Ansi时把中文转成了GBK编码
    用Java实现也是一样,把中文用GBK编码保存到文件就可以了
      

  10.   

    如果是直接把一个文件编码从UTF-8转换为GBK我会。但是我现在要做的是,文件的编码是ANSI,也就是在文本工具里面要这么显示。
    里面的中文采用GBK编码,请问这如何来做,可否给个实例。
    怎么感觉好像是文件里面的内容部分采用GBK编码,部分采用其它编码。
      

  11.   


    ANSI的含义根据环境而不同
    在简体中文系统下,ANSI编码代表GB2312编码
    并不是文件里面的内容部分采用GBK编码,部分采用其它编码。而是英文字母数字等在GBK编码下仍是一个字节,与它们的Ascii编码相同。
    所以该文件被存成ANSI编码,实际就是GBK编码
      

  12.   

    纠正了我对ansi的认识,仔细的去查了下,ansi code page=windows code page
    其中
    936 (Simplified Chinese GBK)是其双字节编码页中的一个,
    也就是楼上他们说的,如果没有理解错,因为是ascii的扩展,前128个英文字符在GBK中照常使用,
    楼主把文件保存为GBK已经达到了保存为ansi的要求啊