9 个解决方案
#1
/**
* 判断文件的编码格式
* @param fileName :file
* @return 文件编码格式
* @throws Exception
*/
public static String codeString(String fileName) throws Exception{
BufferedInputStream bin = new BufferedInputStream(
new FileInputStream(fileName));
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 = "UTF-16BE";
break;
default:
code = "GBK";
}
return code;
}
#2
获取文件的前三个字节。
#3
/**
* 判断文件的编码格式
* @param fileName :file
* @return 文件编码格式
* @throws Exception
*/
public static String codeString(String fileName) throws Exception{
BufferedInputStream bin = new BufferedInputStream(
new FileInputStream(fileName));
int p = (bin.read() << 8) + bin.read();
String code = null;
//其中的 0xefbb、0xfffe、0xfeff、0x5c75这些都是这个文件的前面两个字节的16进制数
switch (p) {
case 0xefbb:
code = "UTF-8";
break;
case 0xfffe:
code = "Unicode";
break;
case 0xfeff:
code = "UTF-16BE";
break;
case 0x5c75:
code = "ANSI|ASCII" ;
break ;
default:
code = "GBK";
}
return code;
}
#4
1:可以试试
Unicode: 前两个字节为FFFE;
Unicode big endian: 前两字节为FEFF;
UTF-8: 前两字节为EFBB;
其他的格式没找到,不过如果是中文的话,除了UTF8就是GB2312,要不就是BIG5,
2.取前100个字符,用格式编码尝试,看哪个不是乱码
3.用其他文本编辑工具打开
Jota Text Editor
Jota 是一个为超长文本文件设计的文本编辑器。
她的名字发音为 "i-o-ta"。
特性
- 支持多达 100 万个字符。
- 自动检测多种字符编码。
Unicode: 前两个字节为FFFE;
Unicode big endian: 前两字节为FEFF;
UTF-8: 前两字节为EFBB;
其他的格式没找到,不过如果是中文的话,除了UTF8就是GB2312,要不就是BIG5,
2.取前100个字符,用格式编码尝试,看哪个不是乱码
3.用其他文本编辑工具打开
Jota Text Editor
Jota 是一个为超长文本文件设计的文本编辑器。
她的名字发音为 "i-o-ta"。
特性
- 支持多达 100 万个字符。
- 自动检测多种字符编码。
#5
//其中的 0xefbb、0xfffe、0xfeff、0x5c75这些都是这个文件的前面两个(忘了网上或者自己另存一下看看是什么)字节的16进制数
#6
"ANSI|ASCII" 是5C75
#7
学习了,可行
#8
utf-8前面3个字节标志:ef bb bf
#9
谢谢各位,给分结贴了
#1
/**
* 判断文件的编码格式
* @param fileName :file
* @return 文件编码格式
* @throws Exception
*/
public static String codeString(String fileName) throws Exception{
BufferedInputStream bin = new BufferedInputStream(
new FileInputStream(fileName));
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 = "UTF-16BE";
break;
default:
code = "GBK";
}
return code;
}
#2
获取文件的前三个字节。
#3
/**
* 判断文件的编码格式
* @param fileName :file
* @return 文件编码格式
* @throws Exception
*/
public static String codeString(String fileName) throws Exception{
BufferedInputStream bin = new BufferedInputStream(
new FileInputStream(fileName));
int p = (bin.read() << 8) + bin.read();
String code = null;
//其中的 0xefbb、0xfffe、0xfeff、0x5c75这些都是这个文件的前面两个字节的16进制数
switch (p) {
case 0xefbb:
code = "UTF-8";
break;
case 0xfffe:
code = "Unicode";
break;
case 0xfeff:
code = "UTF-16BE";
break;
case 0x5c75:
code = "ANSI|ASCII" ;
break ;
default:
code = "GBK";
}
return code;
}
#4
1:可以试试
Unicode: 前两个字节为FFFE;
Unicode big endian: 前两字节为FEFF;
UTF-8: 前两字节为EFBB;
其他的格式没找到,不过如果是中文的话,除了UTF8就是GB2312,要不就是BIG5,
2.取前100个字符,用格式编码尝试,看哪个不是乱码
3.用其他文本编辑工具打开
Jota Text Editor
Jota 是一个为超长文本文件设计的文本编辑器。
她的名字发音为 "i-o-ta"。
特性
- 支持多达 100 万个字符。
- 自动检测多种字符编码。
Unicode: 前两个字节为FFFE;
Unicode big endian: 前两字节为FEFF;
UTF-8: 前两字节为EFBB;
其他的格式没找到,不过如果是中文的话,除了UTF8就是GB2312,要不就是BIG5,
2.取前100个字符,用格式编码尝试,看哪个不是乱码
3.用其他文本编辑工具打开
Jota Text Editor
Jota 是一个为超长文本文件设计的文本编辑器。
她的名字发音为 "i-o-ta"。
特性
- 支持多达 100 万个字符。
- 自动检测多种字符编码。
#5
//其中的 0xefbb、0xfffe、0xfeff、0x5c75这些都是这个文件的前面两个(忘了网上或者自己另存一下看看是什么)字节的16进制数
#6
"ANSI|ASCII" 是5C75
#7
学习了,可行
#8
utf-8前面3个字节标志:ef bb bf
#9
谢谢各位,给分结贴了