java中判断文本的编码格式的方法
来源:互联网 发布:中国联通ims网络快吗 编辑:程序博客网 时间:2024/06/05 14:12
java中判断文本的编码格式的方法
很早之前遇到了一个问题,很多文本数据的解析是需要提前知道编码格式的,如果对并不知道编码格式就需要进行自动获取。
提到判断文本格式很多人往往会想到解析文本文件的前几个字节进行判断,或是通过java自带的字符串getBytes的方式进行转换,换成如utf-8之类的通用编码,但是通过测试会发现第一种方法只有部分程序保存的文件会携带这个标识,其他很多如notepad++等保存的完全不支持,第二种方法则完全不可用,直接变成乱码了。
判断文本的编码方式并没有这么简单,按照原理需要从编码格式层面对字符串进行分析,自己写是比较麻烦的,windows api中的MultiByteToWideChar和WideCharToMultiByte获取能帮到忙,但是不具有通用性。
那如何在java中进行编码判断呢,通过查找发现jchardet包是个不错的工具,这个应该是通过firefox的部分代码改进而来的。
首先,在工程中引入jchardet的jar包,或在maven中添加如下内容
<dependency> <groupId>net.sourceforge.jchardet</groupId> <artifactId>jchardet</artifactId> <version>1.0</version></dependency>
校验采用如下方式
public static String getTextCharset(byte[] data,String defaultcharset){ nsDetector det = new nsDetector(nsPSMDetector.CHINESE); final StringBuffer fullcharset = new StringBuffer(""); nsICharsetDetectionObserver server = new nsICharsetDetectionObserver(){ public StringBuffer sb = fullcharset; public void Notify(String charset) { sb.append(charset); } }; det.Init(server); det.DoIt(data, data.length,false); det.DataEnd(); if(StringUtils.isBlank(fullcharset.toString())){ return defaultcharset; } return fullcharset.toString(); }
参数里data是原始数据
阅读全文
0 0
- java中判断文本的编码格式的方法
- java 怎么判断文本内容的编码格式
- java中判断字符编码的格式以及转码
- java判断图片的编码格式
- java 判断txt文件的编码格式
- JAVA判断文件的编码格式
- java判断txt文件的编码格式
- 文本读写与编码格式(1)----文本格式判断(基于文件的FileMap)
- TextView中设置文本格式的方法
- Eclipse文本编码格式修改为UTF-8 的方法
- "Spring"中设置编码格式的方法
- 判断字符串的编码格式
- 判断文件的编码格式
- 判断文件的编码格式
- java通过判断文本的编码方式再读取文件
- java 中判断字符串编码格式
- java中自动判断字符编码的格式以及转码
- 利用java判断文件的编码方法
- 替换文件内指定字符串
- get_screenshot_as_file保存文件路径问题
- swift4.0自定义UITabBarController +UINavigationController
- appium自动化的安装与运用
- TCP与UDP通信协议及Java实现
- java中判断文本的编码格式的方法
- 字符编码的前世今生
- C++之拷贝函数
- RESIZE方法解决临时表空间过大问题
- Xquery编辑中字符串的拼接
- mysql-installer-community安装gething required infomation后闪退
- shell脚本的三种调用方式
- Android Fragment嵌套ViewPager,ViewPager嵌套多个Fragment
- 重建临时表空间解决临时表空间过大问题