我有一个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");
}
输出