IIRC ICU库具有进行字符集检测的代码。虽然这基本上是最好的猜测。
编辑:我的确记错了,请查看此paper / tutorial
如果您正在寻找现成的解决方案,可以尝试Enca。
但是,如果您只想检测可能被解码为UTF-8西里尔字符的内容(没有任何完整的UTF-8有效性检查),您只需要查找/(\xD0[\x81\x90-\xBF]|\xD1[\x80-\x8F\x91]){
n ,}/
(这个精确的正则表达式是 n 后续UTF8编码的俄罗斯西里尔字符)。要进一步检查整个文件是否只包含有效的UTF-8数据,您可以使用isutf8(1)
之类的内容。
这两种方法都有好的和坏的方面,有时可能会给出错误的结果。