如何判断文本文件的编码格式?

mystruts 2005-11-28 11:02:45
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分 ̄!
...全文
2539 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
柯本 2005-11-28
  • 打赏
  • 举报
回复
下面这样可以,不过记事本确不能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";
}
mystruts 2005-11-28
  • 打赏
  • 举报
回复
怎麼判斷呢??

高手呢?
myhotsun 2005-11-28
  • 打赏
  • 举报
回复
Unicode和UFT-8文件前两个字节是FF FE,可是有时候根本无法区分到底是Unicode还是UFT-8。连记事本有时候也都无法区分编码格式,导致显示成乱码。
myhotsun 2005-11-28
  • 打赏
  • 举报
回复
的确如此,看来ue是自动把utf-8转换成unicode了。
柯本 2005-11-28
  • 打赏
  • 举报
回复
我也发现了这个问题,ue会自动判utf-8,并转成unicode
你可有其它编辑工具如winhex打开就能见它的真实内码了
treeroot 2005-11-28
  • 打赏
  • 举报
回复
UTF-8就是Unicode的一种呀!
myhotsun 2005-11-28
  • 打赏
  • 举报
回复
to:keiy()
可否解释一下阿,我用utf-8格式存贮文件时,然后使用ue用16进制方式打开,前面两个字节明明显示的是FF FE,为什么用=(bin.read()<<8)+bin.read();读进来的时候却是EF BB呢?怎么想,也想不明白。请指教一下。
柯本 2005-11-28
  • 打赏
  • 举报
回复
int p=(bin.read()<<8)+bin.read() ;
是将2个字节转成一个整型
mystruts 2005-11-28
  • 打赏
  • 举报
回复
還有就是這句話是什麼意思呢?

int p=(bin.read()<<8)+bin.read() ;
柯本 2005-11-28
  • 打赏
  • 举报
回复
繁体中文下,没试过,我是简体的,没问题
mystruts 2005-11-28
  • 打赏
  • 举报
回复
是呀。我都是那樣做的呀。我的也是2K,

會不會我的操作系統是繁體有關呢?

謝謝你 ̄!
柯本 2005-11-28
  • 打赏
  • 举报
回复
我在w2k下试过,将你的文件在记事本里另存为:编码选你要的就可以了
一般的文本都是ansi的
mystruts 2005-11-28
  • 打赏
  • 举报
回复
謝謝你,但我這裡怎樣那個code都是="ANSI"哦。

再幫幫我好嗎?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧