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. dubbo原理

    1,观察DubboBeanDefinitionParser 的构造方法,给它打一个断点,发现其前一步在DubboNamespaceHandler 应用启动会连续调此方法 DubboBeanDefini ...

  2. jq如何获取服务器的时间

    $.ajax({type:"OPTIONS",url:"/",complete:function(x){alert(x.getResponseHeader(&q ...

  3. linux操作文件和文件夹

    rm filerm -rf folder如将/test1目录下的file1复制到/test3目录,并将文件名改为file2,可输入以下命令:cp /test1/file1 /test3/file2 如 ...

  4. P2221 [HAOI2012]高速公路(线段树)

    P2221 [HAOI2012]高速公路 显然答案为 $\dfrac{\sum_{i=l}^r\sum_{j=l}^{r}dis[i][j]}{C_{r-l+1}^2}$ 下面倒是挺好算,组合数瞎搞 ...

  5. jQuery中prop和attr区别

    问题 今天给一个button加onclick事件,由于最后button根据需要转成字符串,因此不能使用jQurey.click(),只能给button添加onclick属性的方式. 于是,$butto ...

  6. Android Java层,Native层,Lib层打印Log简介【转】

    本文转载自:https://blog.csdn.net/AndroidMage/article/details/52225068 说明: 这里我根据个人工作情况说明在各个层打印log.如有问题欢迎拍砖 ...

  7. 【做题】TCSRM601 Div1 500 WinterAndSnowmen——按位考虑&dp

    原文链接https://www.cnblogs.com/cly-none/p/9695526.html 题意:求有多少对集合\(S,T\)满足:\(S \subseteq \{1,2...n \}, ...

  8. how do I get the difference between two R named lists?

    aa<- list(a=1, b="two", c=list(3, "four")) bb <- list(a=1, c=list(3, " ...

  9. ORM框架 之 Entity Framework

    Entity Framework 1.ADO.NET Entity Framework是以ADO.NET为基础所发展出来的对象关系对应(O/R Mapping)解决方案,早起被称为ObjectSpac ...

  10. 局域网不能访问本机IIS网站的解决方法

    背景:Win7环境下,本机能访问本机IIS网站,但局域网其它电脑访问不了. 解决方法: 一.如果IIS网站是80端口:点击右下角“电脑”图标 -> 点击“打开网络和共享中心” -> 在弹出 ...