Notepad(记事本)只支持四种格式:ANSI/Unicode/Unicode big endian/UFT-8我想讀取文件的時候知道它是用什麼編碼的。然後用
java.io.File f=new java.io.File(filename);
   java.io.BufferedInputStream bin=new java.io.BufferedInputStream(new java.io.FileInputStream(f));
   byte[] buff=new byte[((int)f.length())];
   bin.read(buff,"這裡寫該文件的編碼");//********************怎樣獲得這個文件的編碼呢?謝謝。100分 ̄!

解决方案 »

  1.   

    Unicode和UFT-8文件前两个字节是FF FE,可是有时候根本无法区分到底是Unicode还是UFT-8。连记事本有时候也都无法区分编码格式,导致显示成乱码。
      

  2.   

    下面这样可以,不过记事本确不能100%识别,你可以在记事本中打只打'联通'两个字,然后存盘再打开试试   int p=(bin.read()<<8)+bin.read() ;
       String code=null;
       switch (p)
        {
      
        case 0xefbb:
         code="UTF-8";
         break;
       case 0xfffe:
         code="Unicode";
         break;
       case 0xfeff:
         code="Unicode big endian";
         break;
      default:
         code="ANSI";
       }
      

  3.   

    謝謝你,但我這裡怎樣那個code都是="ANSI"哦。再幫幫我好嗎?
      

  4.   

    我在w2k下试过,将你的文件在记事本里另存为:编码选你要的就可以了
    一般的文本都是ansi的
      

  5.   

    還有就是這句話是什麼意思呢? int p=(bin.read()<<8)+bin.read() ;
      

  6.   

    int p=(bin.read()<<8)+bin.read() ;
    是将2个字节转成一个整型
      

  7.   

    to:keiy()
    可否解释一下阿,我用utf-8格式存贮文件时,然后使用ue用16进制方式打开,前面两个字节明明显示的是FF FE,为什么用=(bin.read()<<8)+bin.read();读进来的时候却是EF BB呢?怎么想,也想不明白。请指教一下。
      

  8.   

    我也发现了这个问题,ue会自动判utf-8,并转成unicode
    你可有其它编辑工具如winhex打开就能见它的真实内码了
      

  9.   

    的确如此,看来ue是自动把utf-8转换成unicode了。