- 浏览: 1608710 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (603)
- T_java (145)
- T_script&ASP (51)
- T_C/C++ (25)
- T_PowerBuilder (11)
- T_Database (53)
- T_odoo (7)
- T_应用服务器 (50)
- T_专_条形码 (6)
- T_专_负载均衡器 (4)
- T_操作系统 (94)
- T_信息安全 (41)
- T_专_搜索引擎 (14)
- T_L_PHP (58)
- T_L_Delphi (18)
- T_L_.NET、C#、VisualStudio (25)
- T_L_Objective-C (6)
- T_移动开发 (53)
- T_网络 (109)
- T_大数据 (2)
- T_嵌入式 (2)
- T_小众技术 (24)
- T_未分类 (58)
- L_旅游印记 (1)
- L_生活随笔 (48)
- L_中国文化 (18)
- L_户外与生存 (0)
最新评论
-
csbean4004:
不知道哪传来得恶习,发帖子不好好发,故意弄错一些东西,很讨厌
让HTML5支持后置摄像头 -
withthewind:
终于找到一个可以用的了。。。
如何用VBA取得Word文档中的标题前面的序号 -
busbby:
兄弟,无法下载,说文件不完整
一个好用的Outlook ost格式文件转pst文件的工具 -
yijavakevin:
密码啊~解压密码多少?
一个二维条形码组件 -
vipbooks:
你给的那个链接根本无法下载,跳到官网看了下最新版12M,但点下 ...
十步以内完成精细web打印
自动检测文本的字符集
(Java port of Mozilla charset detector 工具的使用方法)
Java port of Mozilla charset detector是Mozilla组织开发的用于浏览器自动识别网页字符集的工具的一个JAVA实现。Mozilla有关该工具的地址是:http://www.mozilla.org/projects/intl/chardet.html 。
本JAVA实现版本的地址是:http://sourceforge.net/projects/jchardet/ 。
在JAVA系统开发中,经常遇到字符集的问题(其实不是JAVA的问题,而是软件行业的历史遗留问题),在时候不知道文本内容的编码方式,在处理的时候出现一些意想不到的问题,通过使用此工具,虽不能百分百准确检测字符集,但还可将就用用。此工具检测效率不是很高,使用后对系统性能会有一点影响,对性能要求很高的系统谨慎使用。
下面是如何使用此工具的一个简单说明:
第一步:
在需要检测字符集的类实现接口nsICharsetDetectionObserver,需要实现其中的一个方法:Notify()。该方法会在检测结束的时候被调用并返回检测的字符集(不论对错)。
接口代码如下:
package org.mozilla.intl.chardet ; import java.lang.* ; public interface nsICharsetDetectionObserver { public void Notify(String charset) ; }
第二步:
初始化nsDetector类,然后对字符串流进行检测,如果检测到有非ASCII的字符,则调用nsDetector的DoIt()方法进行检测。
第三步:
当字符串流处理结果后,调用nsDetector的DataEnd()方法,检测引擎会向调用者返回检测到的字符集。下面是一个调用该工具检测指定URL的页面编码方式的例子:
package org.mozilla.intl.chardet ; import java.io.* ; import java.net.* ; import java.util.* ; import org.mozilla.intl.chardet.* ; public class HtmlCharsetDetector { public static boolean found = false ; public static void main(String argv[]) throws Exception { if (argv.length != 1 && argv.length != 2) { System.out.println("Usage: HtmlCharsetDetector <url> [<languageHint>]"); System.out.println(""); System.out.println("Where <url> is http://..."); System.out.println("For optional <languageHint>. Use following..."); System.out.println(" 1 => Japanese"); System.out.println(" 2 => Chinese"); System.out.println(" 3 => Simplified Chinese"); System.out.println(" 4 => Traditional Chinese"); System.out.println(" 5 => Korean"); System.out.println(" 6 => Dont know (default)"); return ; } //初始化nsDetector() ; int lang = (argv.length == 2)? Integer.parseInt(argv[1]) : nsPSMDetector.ALL ; nsDetector det = new nsDetector(lang) ; //设置观察者... //如果检测出了字符集,则会调用Notify()方法. det.Init(new nsICharsetDetectionObserver() { public void Notify(String charset) { HtmlCharsetDetector.found = true ; System.out.println("CHARSET = " + charset); } }); URL url = new URL(argv[0]); BufferedInputStream imp = new BufferedInputStream(url.openStream()); byte[] buf = new byte[1024] ; int len; boolean done = false ; boolean isAscii = true ; while( (len=imp.read(buf,0,buf.length)) != -1) { //检测字符串流中是否只包含ASCII if (isAscii) isAscii = det.isAscii(buf,len); //如果包含非ASCII字符,则调用DoIt()方法进行检测 if (!isAscii && !done) done = det.DoIt(buf,len, false); } det.DataEnd(); if (isAscii) { System.out.println("CHARSET = ASCII"); found = true ; } if (!found) { String prob[] = det.getProbableCharsets() ; for(int i=0; i<prob.length; i++) { System.out.println("Probable Charset = " + prob[i]); } } } }
下面是检测文本文件字符编码的例子,跟检测URL的差不多,只改了输入流获取方式:
package com.iteye.sheng.util.tools; import java.io.* ; import java.net.* ; import java.util.* ; import org.mozilla.intl.chardet.* ; public class FileCharsetDetector { public static boolean found = false ; public static void main(String argv[]) throws Exception { if (argv.length != 1 && argv.length != 2) { System.out.println("Usage: FileCharsetDetector <file> [<languageHint>]"); System.out.println(""); System.out.println("Where <file> is C:/xxxxx.txt"); System.out.println("For optional <languageHint>. Use following..."); System.out.println(" 1 => Japanese"); System.out.println(" 2 => Chinese"); System.out.println(" 3 => Simplified Chinese"); System.out.println(" 4 => Traditional Chinese"); System.out.println(" 5 => Korean"); System.out.println(" 6 => Dont know (default)"); return ; } //初始化nsDetector() ; int lang = (argv.length == 2)? Integer.parseInt(argv[1]) : nsPSMDetector.ALL ; nsDetector det = new nsDetector(lang) ; //设置观察者... //如果检测出了字符集,则会调用Notify()方法. det.Init(new nsICharsetDetectionObserver() { public void Notify(String charset) { FileCharsetDetector.found = true ; System.out.println("CHARSET = " + charset); } }); String filename = argv[0]; BufferedInputStream imp = new BufferedInputStream(new FileInputStream(filename)); byte[] buf = new byte[1024] ; int len; boolean done = false ; boolean isAscii = true ; while( (len=imp.read(buf,0,buf.length)) != -1) { //检测字符串流中是否只包含ASCII if (isAscii) isAscii = det.isAscii(buf,len); //如果包含非ASCII字符,则调用DoIt()方法进行检测 if (!isAscii && !done) done = det.DoIt(buf,len, false); } det.DataEnd(); if (isAscii) { System.out.println("CHARSET = ASCII"); found = true ; } if (!found) { String prob[] = det.getProbableCharsets() ; for(int i=0; i<prob.length; i++) { System.out.println("Probable Charset = " + prob[i]); } } } }
- jchardet-1.1.zip (80.8 KB)
- 下载次数: 27
- FCD.jar (3.1 KB)
- 下载次数: 18
发表评论
-
SpringBoot Fat Jar解压运行
2018-06-28 21:40 2258SpringBoot已经成为当前最流行的微服务 ... -
一句话实现五星评分显示
2018-06-05 08:31 997Python: rate = 1 #rate 取值 ... -
来算google的可视化编程工具——Blockly,不仅仅是玩具
2017-10-16 21:34 33120Blockly - 来自Google的可 ... -
安卓动态分析工具 Inspeckage
2017-08-07 08:46 0工具介绍 一个基于Xposed 开发的应用动态分析工具 g ... -
Android逆向之旅---静态方式破解微信获取聊天记录和通讯录信息
2017-08-07 08:37 0一、猜想数据存放路径 微信现在是老少皆宜,大街小巷都在使用 ... -
破解微信数据库 并查询数据上传服务器
2017-08-07 08:29 0由于工作需求破解了微信的数据库 并获取想要的信息上传服 ... -
安卓黑科技之HOOK详解
2017-08-07 08:21 0本文带大家进入到安卓另一个世界 互联网攻防大战 Xpos ... -
安卓逆向之基于Xposed-ZjDroid脱壳
2017-08-07 08:18 0前言 之前介绍了普通常见的反编译模式 但对于使用了 360 ... -
十步以内完成精细web打印
2017-06-21 11:44 7367注意: 康虎云报表组 ... -
浏览器端精准打印或套打组件
2017-01-18 13:05 6695注意: 康虎云报表 ... -
疯狂软件对Oracle放弃Java EE的看法
2016-08-14 22:38 525来源:http://javaligang ... -
几个Java相关的思维导图
2016-03-17 13:07 954来源:http://blog.csdn.net/jackf ... -
jasperReport Applet 打印
2016-02-01 16:33 868Applet方式的原理是本地下载Applet以及Jas ... -
为Java说句公道话
2016-01-24 10:59 712为Java说句公道话 有些 ... -
Mybatis Generator配置详解(中文)_转
2015-12-17 16:44 917来自: http://www.jianshu.com/p/e ... -
一个提供大量数据模型的网站
2015-12-17 14:00 981网站地址是:http://www.databaseansw ... -
采用ajp代理模式配置Apache+tomcat实现负载均衡(转)
2015-11-13 10:22 869这一种方法,配置简单,性能也高。附AJP介绍: AJP ... -
MyBatis配置文件修改侦测及重载的实现
2015-07-31 13:53 2334MyBatis配置文件修改侦测及重载的实现: /** ... -
Spring optional @PathVariable?
2015-07-09 13:13 913Q: Is it possible to somehow ... -
The forked VM terminated without saying properly goodbye. VM crash or System.exi
2015-07-07 18:22 4290The forked VM terminated witho ...
相关推荐
在Python编程环境中,处理XML和文本字符集探测是常见的任务,尤其在数据处理和解析大量文本数据时。这里我们将深入探讨Python 2.6环境下如何利用特定库来完成这些任务。 首先,我们关注的是`BeautifulSoup`库,这是...
这个数据集名为"文本/字符检测定位数据集,中英文混合",是专门为训练和评估文本检测与识别算法设计的。它包含了从SOSO街景地图自行抓取的大量图像,这些图像具有丰富的多样性,涵盖了道路交通指示牌、路边立柱广告...
在计算机科学与互联网技术中,字符集是一种用于表示文本的标准集合,不同的字符集适用于不同的语言环境。本文将深入探讨GBK与Unicode这两种字符集之间的转换问题,特别是在转换过程中出现乱码的原因及解决方法。 ##...
这些模型通过学习特征表示,能够自动检测并识别图像中的文本。 为了优化模型性能,研究人员可能会进行数据增强,如翻转、旋转、缩放等,以增加模型对不同情况的泛化能力。同时,评估指标也是关键,常见的有精确度...
非法字符通常包括但不限于控制字符、特殊符号、非ASCII字符或者超出预定义字符集的字符。在VB中,我们可以通过字符串操作函数来实现这个功能。以下是一些关键的知识点: 1. **字符串变量和常量**:首先,我们需要...
- 右侧的列表显示了gedit自动检测编码时所考虑的字符集。 - 双击列表中的任意位置,将弹出一个对话框,允许您添加新的编码选项。 - 在对话框中,输入需要支持的编码类型,如`GBK`、`GB2312`、`GB18030`等,并点击...
`cpdetector`是Java中一个常用的库,用于自动检测文件的字符集编码。这个库能够帮助开发者识别文件的编码类型,从而避免在处理文本时出现乱码问题。 `cpdetector`库主要由`com.joestelmach`组织开发,它包含了多种...
- 自动检测和处理UTF8编码,确保解码后的文本正确无误。 - 可能提供批量处理功能,一次性处理多个Base64编码的字符串。 - 可能有错误检查机制,防止非Base64格式的字符串输入,或在解码过程中遇到错误。 - 显示原始...
检测文本文件的编码方式是非常重要的,因为不同的编码方式对应不同的字符集和解析方式。 通过使用C#语言,可以使用各种方法来检测文本文件的编码方式。例如,可以使用System.Text.Encoding类来检测文本文件的编码...
Web开发中的字符集和字符编码是确保正确显示和处理文本数据的关键因素,特别是在涉及多语言和特殊字符时。本文将深入探讨字符集、字符编码、Web浏览器端的处理方式、Web服务器端的处理方式以及数据库的字符编码设置...
1. **字符集与编码**:理解不同的字符集(如ASCII、Unicode、UTF-8等)及其编码方式,因为不同编码可能导致某些字符被视为特殊字符。 2. **正则表达式**:使用正则表达式进行特殊字符匹配,例如,检测非打印字符、...
EAST(Efficient and Accurate Scene Text Detection)是一种高效且准确的场景文本检测算法,其主要目标是自动检测图像中的文本。在图像处理和计算机视觉领域,OCR(Optical Character Recognition,光学字符识别)...
1. 自动检测编码:分析文件内容,尝试识别其原始编码。 2. 手动选择编码:用户可以根据自己的知识选择源文件的编码。 3. 转换为多种编码:支持将文件转换为多种常见字符编码格式,如UTF-8、GBK、GB2312等。 4. 预览...
4. 多语言支持:这个数据集包括中文、英文和繁体字,这意味着模型需要处理不同语言的字符集和书写规则。中文OCR需要识别汉字的复杂结构,英文OCR则关注字母和数字的组合,而繁体字的识别则需要识别更多的传统字符...
文本检测的目标是精确框出图像中的每个字符或单词,为后续的文本识别、信息提取和理解铺平道路。 二、OCR(Optical Character Recognition) OCR技术是文本检测的基础,它将图像中的文字转换成可编辑的电子文本。在...
CRAFT(Character Region Awareness for Text Detection)是一种高效且精确的文本检测算法,它在图像处理领域被广泛应用于自动识别和定位图像中的文本。该算法的核心是通过检测单个字符及其相互关系来确定文本区域,...
文件编码是用来表示文本字符的规则,常见的有ASCII、GB2312、GBK、UTF-8等。不同的编码方式决定了字符集的大小和覆盖的字符范围。例如,ASCII只包含英文字符,而GBK则包含了更多的中文字符。UTF-8是一种多字节编码...
Java提供了强大的字符集支持,如`java.nio.charset`包中的`Charset`类,用于处理字符编码和解码。这个类可能实现了自己的检测算法,通过对字节序列的分析来确定其对应的字符编码。 这个类可能包含以下功能: 1. **...
Java自动识别文件字符编码工具类 参考博客 https://blog.csdn.net/superbeyone/article/details/103036914 使用方式: String encode = EncodingDetect.getFileEncode(geoJsonFile); log.info("系统检测到文件[ {}...