0

我需要一种方法来检测文件是否包含来自某个字符集的字符。

具体来说,我想检测一系列文件中是否存在 UTF8 编码的西里尔字符。有没有工具可以做到这一点?

谢谢

4

2 回答 2

2

IIRC ICU 库具有执行字符集检测的代码。虽然这基本上是一个尽力而为的猜测。

编辑:我没记错,看看这篇论文/教程

于 2009-06-09T11:01:56.333 回答
2

如果您正在寻找现成的解决方案,您可能想尝试Enca

但是,如果您只想检测是否存在可能被解码为 UTF-8 西里尔字符的内容(没有任何完整的 UTF-8 有效性检查),您只需要 grep 类似/(\xD0[\x81\x90-\xBF]|\xD1[\x80-\x8F\x91]){n,}/的内容(这个确切的正则表达式适用于n后续的 UTF8 -编码的俄语西里尔字符)。要进一步检查整个文件是否仅包含有效的 UTF-8 数据,您可以使用类似isutf8(1).

这两种方法都有其好的一面和坏的一面,有时可能会给出错误的结果。

于 2009-06-09T12:10:56.257 回答