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

2016年08月18日 11:36:50 baidu_29569765 阅读数:258更多

个人分类: vc
 

记录一下,免得以后忘记。

进入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的更多相关文章

  1. 文件编码检测.ZC一些资料(包含java的)

    1.IMultiLanguage3 或者 IMultiLanguage2 1.1.怎么判断XML 的编码格式(UTF-8或GB2312等)-CSDN论坛.html(https://bbs.csdn.n ...

  2. zip格式文件编码检测

    解压后文件名乱码 由于zip格式文件无编码存储的结构,因此解压时无法知道原先的编码. 当解压zip格式文件时使用的编码和原编码不一致时,就可能会出现解压后文件名乱码问题. 猜测编码 基于上述问题,需要 ...

  3. Python编程笔记(第三篇)【补充】三元运算、文件处理、检测文件编码、递归、斐波那契数列、名称空间、作用域、生成器

    一.三元运算 三元运算又称三目运算,是对简单的条件语句的简写,如: 简单条件处理: if 条件成立: val = 1 else: val = 2 改成三元运算 val = 1 if 条件成立 else ...

  4. Python中文件编码的检测

    前言: 文件打开的原则是“ 以什么编码格式保存的,就以什么编码格式打开 ”,我们常见的文件一般是以“ utf-8 ”或“ GBK ”编码进行保存的,由于编辑器一般设置了默认的保存和打开方式,所以我们在 ...

  5. php -- php检测文件编码的方法示例

    <?php /** * 检测文件编码 * @param string $file 文件路径 * @return string|null 返回 编码名 或 null */ function det ...

  6. java实现文件编码监测(转)

    chardet是mozilla自动字符集探测算法代码的java移植.这个算法的最初作者是frank Tang,C++源代码在http://lxr.mozilla.org/mozilla/source/ ...

  7. java实现文件编码监测

    java实现文件编码监测 最近在做一个文档的翻译项目,可文档的编码不知道,听头疼的.尝试了很多方法最后发现JCharDet这个工具可以轻松解决这个问题.于是作此笔记希望日后提醒自己以及帮助又需要的人. ...

  8. 修改VISUAL STUDIO EXPRESS 2012新建C++文件编码

    本站文章除注明转载外,均为本站原创或者翻译. 本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商: 本站部分原创和翻译文章提供markdown格式源码,欢迎使 ...

  9. [译]如何定义python源文件的文件编码

    简介 这篇文章是为了介绍定义python源文件文件编码的方法.python解释器可以根据所指定的编码信息对当前文件进行解析.通常来说,这种方法可以提高解析器对Unicode编码的源文件的识别,并且支持 ...

随机推荐

  1. SQL Server char,varchar,nchar,nvarchar区别

    SQL Server char,varchar,nchar,nvarchar区别 (1)       定义: char:    固定长度,存储ANSI字符,不足的补英文半角空格. nchar:   固 ...

  2. Docker学习笔记之从镜像仓库获得镜像

    0x00 概述 之前我们说到了,Docker 与其他虚拟化软件的一处不同就是将镜像管理纳入到了功能之中.实现虚拟化只是程序能够无缝移植的一部分,而有了镜像管理,就真正取代了我们在移植过程中的繁琐操作. ...

  3. 深入理解Word2Vec

    Word2Vec Tutorial - The Skip-Gram Model,Skip-Gram模型的实现原理:http://mccormickml.com/2016/04/19/word2vec- ...

  4. js DOM常见事件

    js事件命名为on+动词 1.onclick事件,点击鼠标时触发,ondbclick双击事件 <h1 onclick="this.innerHTML='点击后文本'"> ...

  5. 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 ...

  6. 免费CDN公共库——网站提速 静态资源库

    原文链接:https://blog.geekzhao.me/cdnjs.html 新浪SAE公共资源 推荐指数★★★ 支持https http://lib.sinaapp.com/js/jquery/ ...

  7. Python3 tkinter基础 Entry validate validatecommand 失去焦点时,检查输入内容

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  8. Oracle面试相关

    存储过程: https://www.cnblogs.com/taiguyiba/p/7809310.html https://www.cnblogs.com/lideng/p/3427822.html ...

  9. BZOJ2306: [Ctsc2011]幸福路径

    Description 有向图 G有n个顶点 1, 2, -, n,点i 的权值为 w(i).现在有一只蚂蚁,从 给定的起点 v0出发,沿着图 G 的边爬行.开始时,它的体力为 1.每爬过一条 边,它 ...

  10. C# winfrom 当前程序内存读取和控制

    https://zhidao.baidu.com/question/31914620.html https://www.cnblogs.com/xcsn/p/4678322.html Process ...