我现在有一个文件,文件的编码方式为“windows-1252”,怎样能让读出来的数据不为乱码!
      请大家别误以为我是问“读中文乱码的问题”,实际上,当文件的编码为“windows-1252”时,即使文件内容全为英文字母,在控制台读出来的依然是乱码!请高手解决!

解决方案 »

  1.   

    楼主确保文件内数据是windows-1252编码格式的话
    建议楼主进行一下转码试试:
    String  s  = new String(your_str.getBytes("windows-1252"), "iso-8859-1");
    或者
    String  s  = new String(your_str.getBytes("windows-1252"), "utf-8");
    多试几次
      

  2.   

    楼主是否用Reader及其子类来读取的文件?
    如果是,那么,你在创建Reader对象的时候,可以设定读取的编码方式。
    也就是说,Reader有好多个同名的构造函数,选择代码指定编码方式的构造函数进行对象的创建。
    (注意,FileReader没有指定编码方式的构造函数)
    本例子:
    String fileName = "";//文件的路径名。
    Reader reader = new InputStreamReader(new FileInputStream(fileName),"windows-1252");
    BufferedReader br = new BufferedReader(reader);
    ....
    这样,应该能够解决楼主的乱码问题。
      

  3.   

    当然,如果JVM上面没有对应编码(windows-1252)的编码器和解码器的话,
    可以尝试的从别的什么地方搞个编码器和解码器的类过来。
    这样,问题应该不大
      

  4.   

    BufferedReader reader=new BufferedReader(new InputStreamReader(new FileInputStream(),"windows-1252"));这样读就可以。
      

  5.   


      public static String getStr_gb(String str) {
      String temp = null;
      try {
       String temp_p = str;
       if (temp_p == null) {
        return temp;
       }
       temp_p = temp_p.trim();
       temp = new String(temp_p.getBytes("windows-1252"), "utf-8");
      } catch (Exception e) {
       e.printStackTrace();
      }
      return temp;
     }
      

  6.   

    多谢各位同行的热心回答,不过,你们的方法我都一一试过了,还是乱码!
    csdn太不厚道了,一不支持附件功能,二我在网络上搜索一个编码软件,却说有非法字符。哎,希望哪位同行给个邮件地址,我把文件发给你们,能把此文件读至ECLIPSE控制台不为乱码即可!本来我想结贴了,大家的答案也基本上就是这样的了,可我总觉得还是应该有方法的!
      

  7.   

    eclipse控制台乱码?
    随便新建一个项目,项目右键->properties->text file encodeing,选中other,输入windows-1252。
    然后在你要运行的class里右键->run as->run configuration->Common->Console Encoding, 选择windows-1252。
    然后运行试试
      

  8.   

    如果那样的话,可能是你的eclipse没有设置好。。
      

  9.   

    run as->run configuration->Common->Console Encoding
      

  10.   

    未收到邮件,要不你发[email protected]也可以。
      

  11.   

    已发,非常感谢同行的支持! 由于这几周很忙,没有时间上CSDN,没有及时回复大家,万望容凉!
      

  12.   

    我也遇到这个问题了, 我只是想读取The world浏览器里的TheWorld.ini配置文件里的内容,读取的东西控制台打印出来的字母中间有小“口”字,汉字是乱码,怎么转都还是那样,求CSDN上的达人啊!!!
      

  13.   

    楼主给的那个文件,其编码是Unicode,而不是那个什么windows-1252编码。import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStreamReader;/**
     * 
     *
     * 该类创建于 2009-6-18 下午08:26:03
     * @version 1.0.0
     * @author 侯磊
     */
    public class ReadFile { public static void main(String[] args) throws Exception {
    String fileName = "d:\\CHECK_RULE_COLL_VW.sql";
    File file = new File(fileName);
    BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file),"Unicode")) ;
    String line = null;
    while((line=br.readLine())!=null){
    System.out.println(line);
    }
    }}
      

  14.   


    看来我是被网络上一个CPdetector检测文件编码给搞晕了,假如preferme  有兴趣,可以检测一下,确实是 windows-1252编码
      

  15.   

    兄弟!怎么我们遇到的问题一模一样哦,多谢23L 呵呵  CPdetector就是个×× 误导人