文件编码检测.ZC
1、今天(20181101) 发现 g文件中的 xml头 和 文件编码不一致,最后发现 貌似是我搞错了,人家的文件 编码方式写的是对的。
我发现的现象是:XML里面写的是"GBK",EditPlus里面 看到的是 文件编码是 UTF-8。可能是我 做了保存动作 自己没注意不记得了?
2、如果真的存在这个现象的话,那我就 需要一个检测文件编码方式 的手段。
查了,发现 有些 编码方式是有 文件头标识的(文件开头的2/3个byte),但是 比较难处理的就是 不规范的UTF8和GBK文件 它们不好判断
2.1、不规范的UTF8和GBK文件,都没有 文件头标识 开始就是文件的数据。
网上也有说 用UTF8对 Unicode字符的编码规则来判断,但是 个人觉得又不太可靠,比如 又有UTF16呢 规则又是怎么样呢?
想找一个 现成的库,直接已调用 就能返回结果的,于是 找到了 一个词"chardet"
3、chardet
3.1、找了好久 基本都是 python使用的,java的也有,就是没有C++的 找到了一篇 还是在 linux上编译生成 dll 再供Windows使用(cywein 编译 libchardet-1.0.4 用于windows - baidu_29569765的博客 - CSDN博客.html【https://blog.csdn.net/baidu_29569765/article/details/52239383?utm_source=blogxgwz6】)
步骤有点多,不可控的环节有点多,怕怕,就没弄,以后有时间再弄...
3.2、谷歌上搜"libchardet-1.0.4",看到2篇相关文章:
(1)、1.0.4-1 _ libchardet package _ Ubuntu.html(https://launchpad.net/ubuntu/+source/libchardet/1.0.4-1)
ZC:这里 我下载到了 libchardet_1.0.4.orig.tar.bz2(E:\chrome_download_180215\ZC_文件编码自动检测)
(2)、libchardet-1.0.5-4.fc27.x86_64.rpm Fedora 27 Download.html(https://fedora.pkgs.org/27/fedora-x86_64/libchardet-1.0.5-4.fc27.x86_64.rpm.html)
ZC:libchardet provides an interface to Mozilla's universal charset detector,which detects the charset used to encode data.
ZC:这里,貌似是 libchardet-1.0.5的Linux里面的安装包(应该是 编译好了 直接安装就可以使用?)
4、上面3.1中的 文章的备份:
ZC:遗憾:文章中说的 小例子 现在已经失效了,文章中 也没说 编译好 libchardet.dll 怎么使用它... 它里面有什么导出函数 都不知道,看来 要用起来的话 还有很多东西要了解, 还有很多路要走...
4.1、文章内容备份:
cywein 编译 libchardet-1.0.4 用于windows
记录一下,免得以后忘记。
进入libchardet-1.0.4目录,执行如下命名。
PATH=/usr/local/i686-w64-mingw32/bin:$PATH
export PATH
./configure --host=i686-pc-mingw32 --prefix=/usr/local/i686-w64-mingw32 \
CC="i686-w64-mingw32-gcc" \
CXX="i686-w64-mingw32-g++" \
CPPFLAGS="-Wall -I/usr/local/i686-w64-mingw32/include" \
LDFLAGS="-L/usr/local/i686-w64-mingw32/lib"
其中 i686-w64-mingw32 ,i686-w64-mingw32-gcc 和安装的 mingw有关系。
上面完了后,make
make 执行完了,进入src 目录
执行如下命名
i686-w64-mingw32-g++ -o libchardet.dll libchardet_la-CharDistribution.o libchardet_la-JpCntx.o libchardet_la-LangBulgarianModel.o libchardet_la-LangCyrillicModel.o libchardet_la-LangGreekModel.o libchardet_la-LangHebrewModel.o libchardet_la-LangHungarianModel.o libchardet_la-LangThaiModel.o libchardet_la-nsBig5Prober.o libchardet_la-nsCharSetProber.o libchardet_la-nsEUCJPProber.o libchardet_la-nsEUCKRProber.o libchardet_la-nsEUCTWProber.o libchardet_la-nsEscCharsetProber.o libchardet_la-nsEscSM.o libchardet_la-nsGB2312Prober.o libchardet_la-nsHebrewProber.o libchardet_la-nsLatin1Prober.o libchardet_la-nsMBCSGroupProber.o libchardet_la-nsMBCSSM.o libchardet_la-nsSBCSGroupProber.o libchardet_la-nsSBCharSetProber.o libchardet_la-nsSJISProber.o libchardet_la-nsUTF8Prober.o libchardet_la-nsUniversalDetector.o libchardet_la-chardet.o -shared -static -fPIC -Wl,--out-implib,libchardet.lib
编译出win 下面用的dll
这个链接是我编译出来的,有小例子
https://yun.baidu.com/share/link?shareid=757367141&uk=3523244269
5、
文件编码检测.ZC的更多相关文章
- 文件编码检测.ZC一些资料(包含java的)
1.IMultiLanguage3 或者 IMultiLanguage2 1.1.怎么判断XML 的编码格式(UTF-8或GB2312等)-CSDN论坛.html(https://bbs.csdn.n ...
- zip格式文件编码检测
解压后文件名乱码 由于zip格式文件无编码存储的结构,因此解压时无法知道原先的编码. 当解压zip格式文件时使用的编码和原编码不一致时,就可能会出现解压后文件名乱码问题. 猜测编码 基于上述问题,需要 ...
- Python编程笔记(第三篇)【补充】三元运算、文件处理、检测文件编码、递归、斐波那契数列、名称空间、作用域、生成器
一.三元运算 三元运算又称三目运算,是对简单的条件语句的简写,如: 简单条件处理: if 条件成立: val = 1 else: val = 2 改成三元运算 val = 1 if 条件成立 else ...
- Python中文件编码的检测
前言: 文件打开的原则是“ 以什么编码格式保存的,就以什么编码格式打开 ”,我们常见的文件一般是以“ utf-8 ”或“ GBK ”编码进行保存的,由于编辑器一般设置了默认的保存和打开方式,所以我们在 ...
- php -- php检测文件编码的方法示例
<?php /** * 检测文件编码 * @param string $file 文件路径 * @return string|null 返回 编码名 或 null */ function det ...
- java实现文件编码监测(转)
chardet是mozilla自动字符集探测算法代码的java移植.这个算法的最初作者是frank Tang,C++源代码在http://lxr.mozilla.org/mozilla/source/ ...
- java实现文件编码监测
java实现文件编码监测 最近在做一个文档的翻译项目,可文档的编码不知道,听头疼的.尝试了很多方法最后发现JCharDet这个工具可以轻松解决这个问题.于是作此笔记希望日后提醒自己以及帮助又需要的人. ...
- 修改VISUAL STUDIO EXPRESS 2012新建C++文件编码
本站文章除注明转载外,均为本站原创或者翻译. 本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商: 本站部分原创和翻译文章提供markdown格式源码,欢迎使 ...
- [译]如何定义python源文件的文件编码
简介 这篇文章是为了介绍定义python源文件文件编码的方法.python解释器可以根据所指定的编码信息对当前文件进行解析.通常来说,这种方法可以提高解析器对Unicode编码的源文件的识别,并且支持 ...
随机推荐
- SQL Server char,varchar,nchar,nvarchar区别
SQL Server char,varchar,nchar,nvarchar区别 (1) 定义: char: 固定长度,存储ANSI字符,不足的补英文半角空格. nchar: 固 ...
- Docker学习笔记之从镜像仓库获得镜像
0x00 概述 之前我们说到了,Docker 与其他虚拟化软件的一处不同就是将镜像管理纳入到了功能之中.实现虚拟化只是程序能够无缝移植的一部分,而有了镜像管理,就真正取代了我们在移植过程中的繁琐操作. ...
- 深入理解Word2Vec
Word2Vec Tutorial - The Skip-Gram Model,Skip-Gram模型的实现原理:http://mccormickml.com/2016/04/19/word2vec- ...
- js DOM常见事件
js事件命名为on+动词 1.onclick事件,点击鼠标时触发,ondbclick双击事件 <h1 onclick="this.innerHTML='点击后文本'"> ...
- redhat6.4 gcc g++ rpm方式安装步骤
centos源 包包自行下载 [root@localhost gcc]# rpm -ivh ppl-0.10.2-11.el6.x86_64.rpm warning: ppl-0.10.2-11.el ...
- 免费CDN公共库——网站提速 静态资源库
原文链接:https://blog.geekzhao.me/cdnjs.html 新浪SAE公共资源 推荐指数★★★ 支持https http://lib.sinaapp.com/js/jquery/ ...
- Python3 tkinter基础 Entry validate validatecommand 失去焦点时,检查输入内容
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- Oracle面试相关
存储过程: https://www.cnblogs.com/taiguyiba/p/7809310.html https://www.cnblogs.com/lideng/p/3427822.html ...
- BZOJ2306: [Ctsc2011]幸福路径
Description 有向图 G有n个顶点 1, 2, -, n,点i 的权值为 w(i).现在有一只蚂蚁,从 给定的起点 v0出发,沿着图 G 的边爬行.开始时,它的体力为 1.每爬过一条 边,它 ...
- C# winfrom 当前程序内存读取和控制
https://zhidao.baidu.com/question/31914620.html https://www.cnblogs.com/xcsn/p/4678322.html Process ...