0

我正在尝试通过 Windows 套接字连接发送字符串,其中包含 ASCII 表之外的“á”等字符。当我尝试这样的事情时,我听到垃圾从另一端出来:

std::string message("á");
retval = send(conn_socket, message.c_str(), message.length(), 0);

所以我开始调查,发现需要使用 UTF8 之类的东西进行编码。虽然我仍在寻找一种在 C++ 中执行此操作的简单方法,但我对我注意到的流行为有疑问:

怎么std::ofstream << message会正确输出á,而cout << message会输出垃圾?2有什么区别?通过套接字发送这些字符时,我可以利用这一点吗?

4

1 回答 1

0

当您使用std::ofstream表示字符的字节写入文件时,直接将其写入文件,打开文件的应用程序负责将这些字节转换回字符。当您写入cout控制台时,会将字节解释为字符。控制台和应用程序不必就字节编码达成一致;尤其是 Windows 控制台将坚持使用代码页解释,即使您更希望使用 UTF-8。

于 2012-08-01T21:04:54.610 回答