2

是否有适当的方法来检测Windows-1251编码字符?

IMO 与多字节本机字符不同,Windows-1251它是一种 8 位字符编码,因此无法将其与其他 8 位本机字符(如latin1. 如果我在这方面错了,请纠正我。

给我的第一条线索是locale,我把所有的non-ascii字符都当作Windows-1251语言环境ru

有没有更好的方法?

更新:

这是我的问题的上下文, MP3 文件Windows-1251的信息中有一些编码字符ID3,我必须检测Windows-1251编码字符,然后使用 将它们转换为 UTF-16 icu4c,否则这些Windows-1251编码字符将在我的系统上表示不可读(Android) . 我认为也许你们中的一些人有更好的方法。

4

2 回答 2

1

GetACP函数可用于确定这一点。它返回系统当前活动的 ANSI 代码页的标识符。

可在此处找到记录在案的代码页标识符列表。您要查找的是1251,它对应于“ANSI Cyrillic (Windows)”代码页。

从代码中使用非常简单;例如在 C 中:

#include <Windows.h>

int main()
{
    if (GetACP() == 1251)
    {
        MessageBoxW(NULL,
                    L"Your system uses the ANSI Cyrillic code page.",
                    L"Code Page Detection",
                    MB_OK | MB_ICONINFORMATION);
    }
    return 0;
}
于 2013-07-09T09:34:56.220 回答
0

当输入一个 8 位字符的数组时,没有可靠的方法来检测这些字符使用了哪种 8 位编码。

于 2013-07-09T11:14:50.560 回答