如何检查文本文件是否使用UTF-8编码

How to check whether text file is encoded in UTF-8?

本文关键字:是否 UTF-8 编码 文件 文本 何检查 检查      更新时间:2023-10-16

如何检查文本文件是否在c++中以UTF-8编码?

尝试将其读取为UTF-8,看看UTF-8编码是否被破坏,如果没有,是否只有有效的Unicode点。

但仍然不能保证文件是UTF-8或ASCII或其他格式。您如何解释包含单个字节的文件,即字母A ?ASCII码?utf - 8 ?其他的吗?同样,如果文件以BOM开头,但不是真正的UTF-8或不打算使用UTF-8,该怎么办?

这篇文章也许你会感兴趣。

您永远无法确定任何一段二进制数据是否打算表示UTF-8。但是,您总是可以检查是否可以将解释为UTF-8。最简单的方法是尝试转换它(比如转换为UTF-32),看看是否没有出现错误。如果您只需要验证,那么您可以做同样的事情,而不需要实际编写输出。(你需要自己写,但这很容易。)

请注意,出于安全原因,在出现第一个错误时完全中止转换是至关重要的,而不是试图以某种方式"恢复"。

尝试转换为UTF-16。如果没有错误,那么很可能是UTF-8。但无论你做什么,它仍然是最好的猜测。