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 事务隔离层级(Transaction Isolation Level)

    关于Sql Server 事务隔离级别,百度百科是这样描述的 隔离级别:一个事务必须与由其他事务进行的资源或数据更改相隔离的程度.隔离级别从允许的并发副作用(例如,脏读或虚拟读取)的角度进行描述. 隔 ...

  2. MySql与MariaDB由来与历程

    MySQL数据库 MySQL数据库是一个关系型数据库管理系统,由瑞典MySQL AB公司开发.MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这 ...

  3. JAVA获取不同操作系统的分隔符等参数

    import java.util.Properties; public class SeparatorUtils { /* system properties to get separators */ ...

  4. Docker学习笔记之Docker的数据管理和存储

    0x00 概述 数据是应用程序重要的产出,所以很好的管理和存储数据,是对应用程序劳动结果的尊重.特别是在大数据时代,所有的数据都是重要的资产,保护好数据是每个开发者必须掌握的技能.我们知道,在 Doc ...

  5. jquery获取包含本身的元素

    我们知道,使用jquery获取一个元素内的所有元素非常容易,使用jQuery.html()就可以. 如果是js语法的话,使用domObj.innerHTML也很容易实现. 那么问题来了,要想获取包涵节 ...

  6. Mybatis打印不出SQL日志

    要是mybatis项目打印出日志,只需要在log4j的配置文件中加上下面一段即可 log4j.logger.com.ibatis=debug log4j.logger.com.ibatis.commo ...

  7. ACM札记

    1. 逗号表达式 在“计蒜客“的ACM教程中,看到这样一段很好的代码: int n; while (scanf("%d", &n), n) { //do something ...

  8. Fiddler抓取手机端(ios+android)APP接口数据(http+https)

    (1)android 环境要求: PC机和手机连接在同一网络下 工具下载地址: Fiddler网上可以下载,自行下载.注意:需要安装fiddlercertmaker(网上自行下载)进行认证 配置步骤: ...

  9. Ubuntu 安装 VS code

    sudo snap install --classic vscode 没有snap就先装snap,是的,就是这么简单.

  10. java基础篇之理解synchronized的用法

    Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 一.当两个并发线程访问同一个对象object中的这个synchronized(this ...