import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.mozilla.intl.chardet.nsDetector;
import org.mozilla.intl.chardet.nsICharsetDetectionObserver;
public class FileCharsetDetector {
private boolean found = false;
private String encoding = null;
public static void main(String[] argv) throws Exception {
File file1 = new File("C:\\test1.txt");
System.out.println("文件编码:" + new FileCharsetDetector().guessFileEncoding(file1));
}
/**
* 传入一个文件(File)对象,检查文件编码
*
* @param file
* File对象实例
* @return 文件编码,若无,则返回null
* @throws FileNotFoundException
* @throws IOException
*/
public String guessFileEncoding(File file) throws FileNotFoundException, IOException {
return guessFileEncoding(file, new nsDetector());
}
/**
* <pre>
* 获取文件的编码
* @param file
* File对象实例
* @param languageHint
* 语言提示区域代码 @see #nsPSMDetector ,取值如下:
* 1 : Japanese
* 2 : Chinese
* 3 : Simplified Chinese
* 4 : Traditional Chinese
* 5 : Korean
* 6 : Dont know(default)
* </pre>
*
* @return 文件编码,eg:UTF-8,GBK,GB2312形式(不确定的时候,返回可能的字符编码序列);若无,则返回null
* @throws FileNotFoundException
* @throws IOException
*/
public String guessFileEncoding(File file, int languageHint) throws FileNotFoundException, IOException {
return guessFileEncoding(file, new nsDetector(languageHint));
}
/**
* 获取文件的编码
*
* @param file
* @param det
* @return
* @throws FileNotFoundException
* @throws IOException
*/
private String guessFileEncoding(File file, nsDetector det) throws FileNotFoundException, IOException {
// Set an observer...
// The Notify() will be called when a matching charset is found.
det.Init(new nsICharsetDetectionObserver() {
public void Notify(String charset) {
encoding = charset;
found = true;
}
});
BufferedInputStream imp = new BufferedInputStream(new FileInputStream(file));
byte[] buf = new byte[1024];
int len;
boolean done = false;
boolean isAscii = false;
while ((len = imp.read(buf, 0, buf.length)) != -1) {
// Check if the stream is only ascii.
isAscii = det.isAscii(buf, len);
if (isAscii) {
break;
}
// DoIt if non-ascii and not done yet.
done = det.DoIt(buf, len, false);
if (done) {
break;
}
}
imp.close();
det.DataEnd();
if (isAscii) {
encoding = "ASCII";
found = true;
}
if (!found) {
String[] prob = det.getProbableCharsets();
//这里将可能的字符集组合起来返回
for (int i = 0; i < prob.length; i++) {
if (i == 0) {
encoding = prob[i];
} else {
encoding += "," + prob[i];
}
}
if (prob.length > 0) {
// 在没有发现情况下,也可以只取第一个可能的编码,这里返回的是一个可能的序列
return encoding;
} else {
return null;
}
}
return encoding;
}
}相关推荐
CAN收发器TJA1145A休眠唤醒应用
TJA1145的唤醒工作原理主要依赖于其内部的唤醒机制和外部硬件的配合,主要涉及低功耗状态、选择性唤醒功能。TJA1145是一款CAN收发器,它支持多种工作模式,包括NormalStandbySleep等。在这些模式中,Sleep模式是最低功耗状态,而Normal模式则是最活跃的状态,其中Standby模式处于两者之间,允许一定的功能操作但功耗较低。TJA1145可以通过接收特定的唤醒源从Sleep或Standby模式唤醒到Standby或Normal模式。唤醒源的检测与处理。
java自动探测文件的字符编码
import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import org.mozilla.intl.chardet.nsDetector;
Nginx&&Keepalived(一)Keepalived介绍
一、背景: 案例1:如现有服务my-service-demo,希望实现高可用和负载均衡: 首先,my-service-demo服务部署在两台机器上,通过nginx去代理这两个节点,负载均衡就实现了。如果只有一个nginx,这台nginx机器一旦宕机,访问nginx会报错。这时候在另外一台机器nginx2上也安装nginx,并配置同样的代理,可以解决上述问题,但是暴露给用户的只有一个域名(或ip),不可能给用户提供两个域名,域名1(nginx机器1)访问不了了再让用户访问域名2(nginx机器2),这
java检查文件的编码格式
近来碰到需要判断文件的编码格式,根据编码格式读取文件,网上百度了好几种方法,遂分享一下。 1.通过文件的前三个字节判断(可用,但据百度说正确率不高): public static String codeString(String fileName) throws Exception { BufferedInputStream bin = new BufferedInputSt...
UNITY2022 Cardboard环境搭建
必须安装 Git,并且 git 可执行文件必须位于 PATH 环境变量中。考文档:https://developers.google.cn/cardboard/develop/unity/quickstart?转到 Assets/Samples/Google Cardboard//Hello Cardboard/Scenes/HelloCardboard 场景中。粘贴https://github.com/googlevr/cardboard-xr-plugin.git到文本输入字段中。
Autosar中CAN信号传输的模块化解析与实战应用
本文深入解析了AUTOSAR架构下CAN信号传输的模块化流程,详细阐述了从应用层软件组件(SWC)到COM模块打包、PduR路由、CanIf硬件抽象直至Can Driver驱动的完整“流水线”。文章通过实战案例,重点说明了模块化设计如何实现解耦与可移植性,并提供了关键模块配置要点与调试技巧,旨在帮助开发者构建高可靠、实时的车载通信系统。
Java 自动检测文件的编码
如果不是约定好的,要想解析txt文件就需要知道文件编码类型,由于文件编码类型众多,例如UTF-8,GBK,UTF-16,GB2312等等 import org.apache.commons.io.FileUtils; String filePath="D:/test.txt"; //获得文件编码 String fileEncode=EncodingDetect.getJ
内存预取黑科技:__builtin_prefetch在数据库和游戏开发中的高阶用法
本文深入探讨了GCC内置函数`__builtin_prefetch`在数据库和游戏开发中的高阶应用。通过LevelDB的SSTable文件读取优化和UE5引擎场景数据流式加载的实战案例,详细解析了预取参数调优的艺术,并借助perf工具量化分析了不同策略的性能提升效果。文章还介绍了与`__builtin_expect`等内置函数的协同优化技巧,帮助开发者最大化缓存命中率。
Java读取txt文档,自动识别编码txt编码
代码 import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayL...
路径规划 | 图解RRT*算法(附ROS C++/Python/Matlab仿真)
RRT*算法针对传统RRT算法进行了渐进最优改进,在添加节点到搜索树的过程中进行重连选择。本文图解RRT*算法原理,并采用ROS C++、Python、Matlab三种语言实现算法,加深理解
一、【vmware虚拟机使用】安装vmware workstations17
本文介绍了VMware Workstation 17的安装与网络配置方法。主要内容包括:通过下载安装包进行标准安装(含许可协议、路径选择等步骤);重点讲解了NAT模式下的网络配置,包括修改子网IP为192.168.2.0网段、设置网关地址和DHCP范围等操作,以避免与主机网络冲突。文章还简要说明了VMware的Hypervisor核心技术原理,包括CPU、内存和存储虚拟化。最后指出完成这些准备工作后,后续将进行CentOS7系统的安装。整个流程配有详细图文说明,适合初学者跟随操作。
文件管理器“编辑器”打开txt文件显示乱码
从邮件或者从电脑导入的含有中文的非utf-8编码的txt显示乱码 修改文件: CMFileManager/src/com/cyanogenmod/filemanager/activities/EditorActivity.java` asyncReadContentURI下的doInBackground try { publishProgress(Integer.valu
嵌入式Modbus协议面试题及参考答案
Modbus 协议采用主从模式进行通信,这种模式定义明确,便于在工业环境中实现设备之间的有序数据交互。在主从模式中,存在一个主站(Master)和多个从站(Slave)。主站通常是工业控制系统中的上位机,如 PLC、工控机等,它负责发起通信请求,控制整个通信过程。从站则是各种现场设备,如传感器、执行器等,它们接收主站的请求,并根据请求进行相应的操作,然后将结果返回给主站。主站的主要功能包括:发起数据读取或写入请求、控制通信的时序和流程、处理从站返回的数据。
java 探测 txt字符编码_Java自动探测文件的字符编码
import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import org.mozilla.intl.chardet.nsDetector;import ...
复分析 阿尔福斯(Ahlfors) 第三版答案 英文
答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案
LinePhone3.2.7(android端最新版本) sip客户端
SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/
java检测文件编码_java自动探测文件的字符编码
importjava.io.BufferedInputStream;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;importorg.mozilla.intl.chardet.nsDetector;importorg.moz...
jre9下载 jdk9
(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】
java 探测 txt字符编码_自动检测TXT文件编码
自动检测文本文件编码的代码(只能简单判断是UTF-8或不是UTF-8),因为一般除了UTF-8之外就是GBK,所以就设置默认为GBK。String charsetDetect(String path) {String _charset="";try {File file = new File(path);InputStream fs = new FileInputStream(file);byte...
温度PID控制PLC程序
温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值
java使用cpdetecto 编码探测
在项目中加入 这几个包都在附件的cpdetector_1.0.8_binary.zip中 - cpdetector_1.0.8.jar - chardet.jar - antlr.jar /** * 文件流中 读取字节编码 * @param in * @return * @throws Exception * @throws...
GeoTools实战:GeoJSON与Shp互转中的编码与坐标系处理技巧
本文深入探讨了使用GeoTools进行GeoJSON与Shapefile格式互转的核心难点与实战技巧。重点解析了字符编码乱码与坐标系错位两大常见问题的根源,提供了从环境配置、编码处理、几何字段重命名到坐标系自动识别与转换的完整解决方案,并分享了性能优化与异常处理经验,旨在帮助开发者构建健壮可靠的地理数据转换工具。
java 探测 txt字符编码,jChardet探测文件字符编码
packagetest;importjava.io.BufferedInputStream;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;importorg.mozilla.intl.chardet.nsDet...
文件编码探测与原理、Java实现与构造让探测器失效文件
文章目录构造让探测器失效的文件文件编码探测原理探测器Java实现版本测试 构造让探测器失效的文件 我们用vscode打开一个文本文件的时候,默认会使用UTF-8编码,所以当文件不是UTF-8编码的时候就会乱码。 但是,好像notepad–这类编辑器就似乎总是能以正确的编码打开文本文件。 为什么呢? notepad–这类编辑器真的总能以正确编码打开文件不出现乱码吗? 答案是否定的,不信,用下面的代码生成一个文件试一试,notepad–类编辑器是否能正确打开。 @Test public void write(
xml如何探测字符编码
xml如何探测字符编码 之前一度以为,xml头部的字符声明部分,即: 可以轻易被parser解析,因为这部分可以保证全英文,都是基础的ascii字符,所有编码对这块兼容。 看了这篇帖子和xml规范才知道: 1、不是所有编码方式都是ascii基础字符兼容的 UTF-16 (LE/BE), UCS-2, UCS-4 and EBCDIC are all legal encodin
java检测网络或本地文件字符编码(解决乱码)
相信很多人在编码时遇到乱码问题,现在介绍一种检测字符编码的方法 File file=new File(filename); FileInputStream read=new FileInputStream(file); SAXParserFactory factory=SAXParserFactory.newInstance(); SAXParser parser=factory.n
java 读取流的字符编码格式_怎么读取java文件中字符编码格式
展开全部1:简单判断是UTF-8或不是UTF-8,因为一般除了UTF-8之外就是GBK,所以e69da5e6ba9062616964757a686964616f31333363373162就设置默认为GBK。按照给定的字符集存储文件时,在文件的最开头的三个字节中就有可能存储着编码信息,所以,基本的原理就是只要读出文件前三个字节,判定这些字节的值,就可以得知其编码的格式。其实,如果项目运行的平台就是...
java 文件的字符编码_Java获取文本文件字符编码的两种方法
Java判断文本文件字符编码的两种方法:1、通过文件流的前面部分字节判断;2、通过cpdetector库提供的监听方法来判断。1、取文件流方式public static String codeString(String fileName) throws Exception {BufferedInputStream bin = new BufferedInputStream(new FileInpu...
5952



被折叠的 条评论
为什么被折叠?



