是否有正确的方法来检测Windows-1251
个编码字符?
IMO与多字节本地字符不同,Windows-1251
是一个8位字符编码,因此无法将其与latin1
等其他8位本机字符区分开来。如果我错了,请纠正我。
我的第一个线索是locale
,如果区域设置为non-ascii
,我会将所有Windows-1251
个字符设为ru
。
有没有更好的方法?
更新:
以下是我的问题的上下文,MP3文件的Windows-1251
信息中有一些ID3
个编码字符,我必须检测Windows-1251
个编码字符,然后转换它们使用icu4c
转换为UTF-16,否则这些Windows-1251
编码的字符在我的系统上将无法读取(Android
)。我想也许你们中有些人有更好的方法。
答案 0 :(得分:1)
GetACP
函数可用于确定此问题。它返回当前对系统有效的ANSI代码页的标识符。
可以找到记录的代码页标识符列表here。您正在寻找的是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;
}
答案 1 :(得分:0)
当作为输入给出8位字符的数组时,没有可靠的方法来检测,这些字符使用了8位编码。