发现一个很奇怪的问题。
如果只读写UTF-8或者GBK文件,则不会出现乱码。但是:
1、如果程序的前半部分读取UTF-8文件,后半部分将结果写出到GBK文件,则这个GBK文件头自动带上了UTF-8的BOM(FF FE),其它内容还是按照GBK编码的,这样就造成了乱码问题。
2、如果输出文件本来就存在,而且带UTF-8的BOM,则即使程序只读取GBK文件,写出GBK文件,最终的输出文件还是带有BOM,这样也会造成乱码问题。
想尽办法也解决不了这两个问题,望高手相助,急用。谢谢!

解决方案 »

  1.   

    一个文本既要有utf8,又要有gbk?
      

  2.   

    楼主高人!我只知道charset要么utf-8要么gbk,还没试过混着用!期待………………
      

  3.   

    附上写出程序代码:
    BufferedWriter writer = null;
    try {
    writer = new BufferedWriter(new OutputStreamWriter(
    new FileOutputStream(outputFile), encoding));
    for (int i = 0, n = fieldList.size(); i < n; i++) {
    String fieldName = (String) fieldList.get(i);
    writer.write(fieldName + '=' + r.get(fieldName));
    writer.newLine();
    }
    } finally {
    if (writer != null) {
    writer.close();
    }
    }
      

  4.   

    有些跟贴的看来还没明白我的意思,我这个程序的一部分功能是将UTF-8文件里的内容读取出来,存放到GBK文件中的。一个文件里是不可能混合使用两种编码的,否则肯定出现乱码。
      

  5.   

    A:最好两个文件统一编码
    B:写入到GBK编码的文件中时,把要写进去的内容按GBK编一下码
      

  6.   

    问题不在于对内容的编码,而是因为Java在创建输出文件的时候自动带上了FF FE头,也不管我在OutputStreamWriter中指定的是什么编码,怎样避免Java这种古怪的行为?注:这种古怪行为只有当前面程序读取过UTF-8文件时才出现。另外,能统一文件编码我早就采用了,这是一个工具程序,外部条件决定了必须处理不同编码格式。