云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

阿里云_金瓶梅电影百度云_安全稳定

小七 141 0

我在SCN论坛上经常看到关于从文本文件中读取错误字符的问题。有些问题是因为文件字符没有按预期编码,并且原始海报不知道字符集(或代码页),甚至不知道字符编码的概念。

这些问题涉及文件,但也涉及其他媒体,如HTTP、FTP、web服务、存档或附加文件,等

ICU提出了一个工具(),通过分析字节自动检测字符集。当然,它的假设有时可能是错误的,特别是如果文本是由字母数字代码而不是简单的单词组成的,但是它对经典(电子)书籍中的文本的猜测非常好。它还可以猜测语言(英语、法语等),这也很好地工作-除了一些非常接近的语言,大数据学什么,如丹麦语和挪威语-

此工具将有助于ABAP开发人员在获取错误字符时遇到问题,所以我把ICU C++源代码转换成ABAP,这样就很容易使用。https://github.com/sandraros/abap-CSR。它至少需要一个7.40abap系统,你可以用abapGit安装它。

目前,我只移植了西方和Unicode字符集的部分(不移植中文、韩文和日文)。我做了一些补充,比如将分析限制在前1000个字节,以及在没有字节顺序标记时添加UTF-16识别算法。如果你看到一些错误,改进等等,不要犹豫,报告他们在项目网站上,甚至参与。

这里有两种方法如何使用该工具:

如果它是一个文件,运行程序Z\u CSR\u file\u DETECTOR。如果是另一种介质,请更改代码(暂时,完成后还原!)将媒体内容存储到"XSTRING"变量中,并将以下代码行添加到您的程序中,并调试执行,以查看检测到的语言和字符集:

决不能从自定义程序调用此工具,因为有一天由于字符集错误而无法正确处理文件是有风险的识别失败。程序应始终假定文件具有给定的字符集。而且,算法根本没有优化(这就是为什么我决定将识别限制在前1000个字节,大数据与人工智能,这似乎已经足够了)。

如果你想在沙盒中玩,你可以调用程序Z\u CSR\u CREATE\u DEMO\u FILES来自动创建各种字符集和语言的文件。运行程序Z\u CSR\u FILE\u DETECTOR,它将显示每个字符集和语言的置信度。例如,对于含有挪威文字的文件,程序猜测它可能(最佳置信度71%)是用iso-8859-1字符集编码的,并且包含挪威文字("否",请参阅语言代码):

如果您想对代码进行反向工程以了解检测的工作原理,您可能会发现程序Z\u CSR\u DISPLAY\u NGRAMS很有用。它通过对目录/src/data中类中的数据进行解码,显示每种语言中最常见的三个连续字符。例如在英语中,它是AID,AND,ATE,物联网应用,免费自助建站系统,ATI,ENT,For,HAT,HER,懒懒淘客,ING,ION,SAI,TER,THA,THE,TIO。在法语中是ANT、ATI、CON、DES、ENT、EUR、ION、LES、MEN、ONT、OUR、QUE、TIO等