Java字符集检测,更好的支持中文字符集
2015-04-21 17:27
453 查看
import java.nio.charset.Charset; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.mozilla.universalchardet.UniversalDetector; /** * 字符集工具类,提供了检测字符集的工具方法 * 首先当然是使用mozilla的开源工具包universalchardet进行字符集检测,对于检测失败的,使用中文常用字进行再次检测 * @date 2015年4月21日下午5:24:30 */ public class CharsetUtils { /** * 中文常用字符集 */ public static final String[] AVAILABLE_CHINESE_CHARSET_NAMES = new String[] { "GBK", "gb2312", "GB18030", "UTF-8", "Big5" }; /** * 中文常用字 */ private static final Pattern CHINESE_COMMON_CHARACTER_PATTERN = Pattern.compile("的|一|是|了|我|不|人|在|他|有|这|个|上|们|来|到|时|大|地|为|子|中|你|说|生|国|年|着|就|那|和|要"); public static Charset detect(byte[] content) { String charset = universalDetect(content); if (charset != null && !charset.isEmpty()) { return Charset.forName(charset); } int longestMatch = 0; for (String cs : AVAILABLE_CHINESE_CHARSET_NAMES) { String temp = new String(content, Charset.forName(cs)); Matcher matcher = CHINESE_COMMON_CHARACTER_PATTERN.matcher(temp); int count = 0; while (matcher.find()) { count += 1; } if (count > longestMatch) { longestMatch = count; charset = cs; } } return charset == null ? Charset.forName("GB18030") : Charset.forName(charset); } /** * 使用mozilla的开源工具包universalchardet进行字符集检测,不一定能完全检测中文字符集 */ public static String universalDetect(byte[] content) { UniversalDetector detector = new UniversalDetector(null); detector.handleData(content, 0, content.length); detector.dataEnd(); return detector.getDetectedCharset(); } }
相关文章推荐
- linux 安装中文支持包及中文字符集配置
- java将中文转换成英文并支持首字母大写
- Java高级语法笔记-字符集与中文编码
- Android 利用Java实现压缩与解压缩(zip、gzip)支持中文路径
- 支持中文的PHP字符串截取函数 (附各语言的字符集编码范围)
- 添加javabrowser 支持中文
- 【图片识别】Java中使用tess4J进行图片文字识别(支持中文)(转)
- dj java decompiler 反编译支持中文
- Java模块 -- 数组/集合中文汉字排序(支持生僻汉字)
- Android 利用Java实现压缩与解压缩(zip、gzip)支持中文路径
- Ubuntu更改MySQL字符集utf8,以支持中文
- 修改ReadMorePlugin.java,使其支持中文标题(roller webblog)
- linux 安装中文支持包及中文字符集配置
- mysql字符集支持中文
- 如何使linux中java支持中文
- 检测unicode字符集(中文 日文 等其它)
- Android 利用Java实现压缩与解压缩(zip、gzip)支持中文路径
- Mariadb对中文字符集的支持
- MatchDroid--类正则表达式匹配自动机,更好效率与中文支持
- [JAVA]支持中文参数的 jspSmartUpload