Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我需要一种方法来检测文件是否包含来自某个字符集的字符。
具体来说,我想检测一系列文件中是否存在 UTF8 编码的西里尔字符。有没有工具可以做到这一点?
谢谢
IIRC ICU 库具有执行字符集检测的代码。虽然这基本上是一个尽力而为的猜测。
编辑:我没记错,看看这篇论文/教程
如果您正在寻找现成的解决方案,您可能想尝试Enca。
但是,如果您只想检测是否存在可能被解码为 UTF-8 西里尔字符的内容(没有任何完整的 UTF-8 有效性检查),您只需要 grep 类似/(\xD0[\x81\x90-\xBF]|\xD1[\x80-\x8F\x91]){n,}/的内容(这个确切的正则表达式适用于n后续的 UTF8 -编码的俄语西里尔字符)。要进一步检查整个文件是否仅包含有效的 UTF-8 数据,您可以使用类似isutf8(1).
/(\xD0[\x81\x90-\xBF]|\xD1[\x80-\x8F\x91]){
,}/
isutf8(1)
这两种方法都有其好的一面和坏的一面,有时可能会给出错误的结果。