为什么80%的码农都做不了架构师?>>>   

在抓取网站的页面的时候最烦人的一件事情之一就是识别原站点的编码,通常来说只有GBK(GB2312)和UTF8两种,不过依旧需要读取大量Http头信息来识别,有些网站则由于历史原因两种编码同时存在,导致抓取中的一些问题。于是苦苦寻找,终于找到神器juniversalchardet。

首先引包

<!-- Mozilla的编码识别包 -->
<dependency><groupId>com.googlecode.juniversalchardet</groupId><artifactId>juniversalchardet</artifactId><version>1.0.3</version>
</dependency>

写个简单的Demo(我封装成工具方法了)

import java.io.File;
import java.io.IOException;import looly.github.hutool.FileUtil;
import org.mozilla.universalchardet.UniversalDetector;/*** 编码识别工具类* @author loolly**/
public class CharsetDetectUtil {public static String detect(byte[] content) {UniversalDetector detector = new UniversalDetector(null);//开始给一部分数据,让学习一下啊,官方建议是1000个byte左右(当然这1000个byte你得包含中文之类的)detector.handleData(content, 0, content.length);//识别结束必须调用这个方法detector.dataEnd();//神奇的时刻就在这个方法了,返回字符集编码。return detector.getDetectedCharset();}public static void main(String[] args) throws IOException {byte[] bytes = FileUtil.readBytes(new File("E:/workspace/python/htmlUtil.py"));System.out.println(detect(bytes));}
}

注意

我这个工具方法还是有些可以改进的,官方建议重复利用UniversalDetector对象,可以设置为类属性,不过这时你就要调用detector.reset()方法重置UniversalDetector了(还有就是如果设置为类属性,编码识别这个方法就不是线程安全的了)。

官网上还提到了一个jchardet,是另一个字符编码识别库,只不过比juniversalchardet老一些,速度也比不上后者,所以建议大家使用juniversalchardet。

转载于:https://my.oschina.net/looly/blog/263418

使用juniversalchardet做字符编码识别相关推荐

  1. 天池学习赛——街景字符编码识别(得分上0.93)

    项目代码已上传至github需要的可以自行下载 目录 1 比赛介绍 2 解题思路 3 比赛数据集 4 模型训练 5 更改detect.py文件 6 上传文件 1 比赛介绍 项目链接:零基础入门CV - ...

  2. 天池大赛:街景字符编码识别——Part2:数据读取与数据扩增

    街景字符编码识别 更新流程↓ Task01:赛题理解 Task02:数据读取与数据扩增 Task03:字符识别模型 Task04:模型训练与验证 Task05:模型集成 底到镜一 比赛链接 Part2 ...

  3. 天池-街景字符编码识别2-数据读取与数据扩增

    本此使用[定长字符识别]思路来构建模型 赛题地址 零基础入门CV赛事- 街景字符编码识别 关于更详细的数据预处理可=可以参考我的另一篇博文: 卷积神经网络性能优化(提高准确率) 2 数据读取与数据扩增 ...

  4. 天池-街景字符编码识别1-赛题理解

    赛题地址 零基础入门CV赛事- 街景字符编码识别 前期环境 运行环境及安装 运行环境 python3.7 pytorch1.3.1 有GPU 首先在Anaconda中创建一个专门用于本次练习赛的虚拟环 ...

  5. 阿里天池比赛——街景字符编码识别

    文章目录 前言 一.街景字符编码识别 1. 目标 2. 数据集 3. 指标 总结 前言 之前参加阿里天池比赛,好久了,一直没有时间整理,现在临近毕业,趁论文外审期间,赶紧把东西整理了,5月底学校就要让 ...

  6. 零基础入门CV赛事- 街景字符编码识别

    零基础入门CV赛事- 街景字符编码识别 Task01 学习目标 数据介绍 Task01任务内容 数据读取 解题思路 学习目标 熟悉计算机视觉赛事 完成典型的字符识别问题 掌握CV领域赛事的编程和解题思 ...

  7. 零基础入门CV赛事—街景字符编码识别—task2数据读取与扩增

    数据读取与扩增 上节学习了街景字符编码识别的解题思路,让我们对本赛题有了基本的idea,这节在定长字符编码的思路基础上学习读取数据和数据扩增. 图像数据读取 由于赛题数据是图像数据,赛题的任务是识别图 ...

  8. 计算机视觉实践(街景字符编码识别)-Task2 数据读取与数据扩增

    计算机视觉实践(街景字符编码识别)-Task2 数据读取与数据扩增 2.1.数据读取与数据扩增 本章主要内容为数据读取.数据扩增方法和Pytorch读取赛题数据三个部分组成. 2.1 学习目标 学习P ...

  9. 天池-街景字符编码识别5-模型训练与验证

    模型集成 包括:集成学习方法.深度学习中的集成学习和结果后处理思路. 集成学习方法 在机器学习中的集成学习可以在一定程度上提高预测精度,常见的集成学习方法有Stacking.Bagging和Boost ...

最新文章

  1. 初识powershell、nuget powershell 调试
  2. linux通过spi和stm32通信,双STM32通过SPI进行通信
  3. C语言整数与字符串相互转换
  4. vscode 插件推荐 - 献给所有前端工程师(2018.4.29更新)
  5. python实现的遗传算法实例(一)
  6. UVA11942 Lumberjack Sequencing【Ad Hoc】
  7. Live Mesh - Synchronizing life
  8. Allegro gerber文件路径设定
  9. VS Code插件安装位置
  10. 超牛无损图片放大神器PhotoZoom
  11. T229473 D. 背单词的小智(二分)
  12. C语言实现格林威治时间转北京时间+根据日期计算星期几
  13. latex利用bibmap生成双语对照的文献表
  14. java.util.Map——Map集合的常用方法
  15. matplotlib入门基础(五)轴坐标范围 轴刻度比例 轴刻度
  16. WPS文档消除格式并消除大片空白格
  17. php++ui设计课程,UI设计主要学什么?
  18. 服务器系统做成iso镜像,把服务器做成镜像
  19. 使用iso安装linux系统安装教程,使用光盘iso实现Linux操作系统的自动安装部署
  20. 恢复报错ora-01180

热门文章

  1. libxml解析xml文件的一些总结
  2. 学点数学(2)-特征函数
  3. 大数据学习(2-1)-Hadoop安装教程-单机模式和伪分布模式(Ubuntu14.04LTS)
  4. 剑指offer_04
  5. Linux进程之间通信 消息队列
  6. 毛概 第二章新民主主义革命理论
  7. 细数25个硅谷最热创业公司 寻找创业灵感
  8. GCC中SIMD指令的应用方法
  9. 264分析两大利器:264VISA和Elecard StreamEye Tools
  10. PLSQL的表窗口开启(不小心把PLSQL的表窗口关了,在哪里打开)