相关疑难解决方法(0)

如何正确确定文本文件的字符编码?

这是我的情况:我需要正确确定哪个字符编码用于给定的文本文件.希望它能正确返回以下类型之一:

enum CHARACTER_ENCODING
{
    ANSI,
    Unicode,
    Unicode_big_endian,
    UTF8_with_BOM,
    UTF8_without_BOM
};
Run Code Online (Sandbox Code Playgroud)

到目前为止,我可以正确地告诉文本文件Unicode,Unicode big endian或者UTF-8 with BOM通过调用以下函数.它还可以正确地确定ANSI给定的文本文件是否最初不是UTF-8 without BOM.问题是,当文本文件是UTF-8 without BOM,以下函数将错误地将其视为ANSI文件.

CHARACTER_ENCODING get_text_file_encoding(const char *filename)
{
    CHARACTER_ENCODING encoding;

    unsigned char uniTxt[] = {0xFF, 0xFE};// Unicode file header
    unsigned char endianTxt[] = {0xFE, 0xFF};// Unicode big endian file header
    unsigned char utf8Txt[] = {0xEF, 0xBB};// UTF_8 file header

    DWORD dwBytesRead = 0;
    HANDLE hFile = CreateFile(filename, GENERIC_READ, FILE_SHARE_READ, …
Run Code Online (Sandbox Code Playgroud)

c++ text character-encoding

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×1

character-encoding ×1

text ×1