android - 如何检测 Windows-1251 编码字符

标签 android character-encoding cyrillic

<分区>

有没有合适的方法来检测 Windows-1251编码字符?

IMO,与多字节 native 字符不同,Windows-1251是 8 位字符编码,因此无法将其与其他 8 位 native 字符(如 latin1)区分开来.如果我在这方面有误,请纠正我。

给我的第一条线索是locale , 我把所有的 non-ascii字符为 Windows-1251如果语言环境是 ru .

有没有更好的方法?

更新:

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

最佳答案

GetACP函数可用于确定这一点。它返回系统当前处于 Activity 状态的 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;
}

关于android - 如何检测 Windows-1251 编码字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17544426/

相关文章:

java - 如何从 CharsetDecoder 的 .decode() 生成 UnmappableCharacterException?

c++ - QMediaPlayer 在 Windows 上使用西里尔文错误解析 url

HTTPie/cURL 在 Windows 上不显示西里尔字符

Python 2 假定不同的源代码编码

java - 如何忽略 Okhttp 中的 SSL 错误?

android - 我想要一个进度条,但得到一个微调进度对话框

android - 如何显示图片?

java - MySQL Java国际字符(UTF-8)编码

ruby - 在 Ruby 中将字符串中的西里尔字母音译成拉丁语?

android - 抽屉导航和工具栏出现在初始屏幕中