
java中使用InputStreamReader的getEncoding方法不能获取正确的结果
案例如下:我使用正常流读取文件的方式读取一个文件,然后用getEncoding方法,结果返回gbk,然后我通过转码的方式,重新覆盖该文件,将文件转码为UTF-8格式,并且...
案例如下:我使用正常流读取文件的方式读取一个文件,然后用getEncoding方法,结果返回gbk,然后我通过转码的方式,重新覆盖该文件,将文件转码为UTF-8格式,并且通过其他途径验证了转码已经成功,但是重新读取该文件时,返回的结果仍然是UTF-8,对此表示十分困惑,难道这个方法只返回当前系统的默认字符集么?与文件本身没关系?
展开
1个回答
展开全部
public final class CpdetectorUtil {
private static final CodepageDetectorProxy detector = CodepageDetectorProxy
.getInstance();
static {
detector.add(new ParsingDetector(false));
detector.add(JChardetFacade.getInstance());
detector.add(UnicodeDetector.getInstance());
detector.add(ASCIIDetector.getInstance());
}
private CpdetectorUtil() {
}
/**
*
* 感知文件编码方式。
*
* @param 待探测文件
* @return 编码字符串,为空表示没有找到该编码
*/
public static String perceiveCode(File file) {
if (null == file || !file.exists()) {
return null;
}
Charset charset = null;
try {
charset = detector.detectCodepage(file.toURI().toURL());
} catch (Exception ex) {
Log.error(ex);
}
if (charset != null) {
return charset.name();
}
return null;
}
}
需要三个jar
cpdetector_1.0.10.jar
chardet-1.0.jar
antlr-2.7.4.jar
希望能帮助你
private static final CodepageDetectorProxy detector = CodepageDetectorProxy
.getInstance();
static {
detector.add(new ParsingDetector(false));
detector.add(JChardetFacade.getInstance());
detector.add(UnicodeDetector.getInstance());
detector.add(ASCIIDetector.getInstance());
}
private CpdetectorUtil() {
}
/**
*
* 感知文件编码方式。
*
* @param 待探测文件
* @return 编码字符串,为空表示没有找到该编码
*/
public static String perceiveCode(File file) {
if (null == file || !file.exists()) {
return null;
}
Charset charset = null;
try {
charset = detector.detectCodepage(file.toURI().toURL());
} catch (Exception ex) {
Log.error(ex);
}
if (charset != null) {
return charset.name();
}
return null;
}
}
需要三个jar
cpdetector_1.0.10.jar
chardet-1.0.jar
antlr-2.7.4.jar
希望能帮助你
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询