如题。
InputStreamReader isr = new InputStreamReader(new FileInputStream("e:\\test.txt"),"GBK");
//System.err.println(isr.getEncoding());
BufferedReader br = new BufferedReader(isr);比如用上面的代码显示文件内容,如果文件使用的编码是unicode,在控制台打印就是乱码,怎样才能提前获得文件的编码方式然后new一个合适的InputStreamReader呢?
InputStreamReader isr = new InputStreamReader(new FileInputStream("e:\\test.txt"),"GBK");
//System.err.println(isr.getEncoding());
BufferedReader br = new BufferedReader(isr);比如用上面的代码显示文件内容,如果文件使用的编码是unicode,在控制台打印就是乱码,怎样才能提前获得文件的编码方式然后new一个合适的InputStreamReader呢?
前一阵写了一个看TXT的小工具(主要是为了偷偷看闲书),
结果从网上下的TXT有些是UNICODE的,用小工具打开就是一堆乱码,后来瞎摸索找到了方法可以正确读出GBK和UNICODE的文件了,可因为中毒源代码找不到了又忘了咋写的了。现在想彻底解决这个问题的办法
有些文件已经在文件内容里面告诉你它的编码了。
我就知道,文件开头2字节是FF FE的是Unicode的
网上看到一位同仁用c#写的代码,功楼主参考。就是楼上所说的方法
只是简单的判断文件编码是否为:Unicode UnicodeBIG UTF-8public class EncodingType
{
public static System.Text.Encoding GetType(string FILE_NAME)
{
FileStream fs = new FileStream(FILE_NAME, FileMode.Open, FileAccess.Read);
System.Text.Encoding r= GetType(fs);
fs.Close();
return r;
}
public static System.Text.Encoding GetType(FileStream fs)
{
byte[] Unicode=new byte[]{0xFF,0xFE};
byte[] UnicodeBIG=new byte[]{0xFE,0xFF};
byte[] UTF8=new byte[]{0xEF,0xBB,0xBF};BinaryReader r = new BinaryReader(fs,System.Text.Encoding.Default);
byte[] ss=r.ReadBytes(3);
r.Close();
//编码类型 Coding=编码类型.ASCII;
if(ss[0]>=0xEF)
{
if(ss[0]==0xEF && ss[1]==0xBB && ss[2]==0xBF)
{
return System.Text.Encoding.UTF8;
}
else if(ss[0]==0xFE && ss[1]==0xFF)
{
return System.Text.Encoding.BigEndianUnicode;
}
else if(ss[0]==0xFF && ss[1]==0xFE)
{
return System.Text.Encoding.Unicode;
}
else
{
return System.Text.Encoding.Default;
}
}
else
{
return System.Text.Encoding.Default;
}
}
}
OutputStreamWriter.getEncoding() 返回此流使用的字符编码的名称。
不知道是不是你想要的! ^_^