逐个字符打印日文文本不起作用

时间:2017-05-28 13:07:22

标签: c++ utf-8

我有一个std :: string,包含一个未知编码格式的字节序列(字符)。 (有一些可能性,我正在努力将它们转换为UTF-8)

我的测试程序使用std :: cout和printf以及.c_str()将字符串正确打印到我的终端,但逐个字符的打印会产生 mojibake

其他帖子说std :: string只包含一个字节序列,那么为什么一次输出所有字节(通过std :: cout或c_str())而不是一次输出一个字节会有什么不同?

void
dumpString(const std::string &s)
{
    printf("dumpString: '%s'\n", s.c_str());

    std::cout << "cout:   " << s << std::endl;

    printf("By chars: ");
    for (int i = 0; i < s.size(); i++)
    {
        unsigned char c = s.at(i);
        printf("%c ", c);
    }
    printf("\n");

    printf("By Hex: ");
    for ( int i = 0 ; i < s.size(); i++)
    {
        unsigned char c = s.at(i);
        printf("%1X ", (unsigned char)c);
    }
    printf("\n");
}

输出

Program output

0 个答案:

没有答案