我有一个套接字,我通过它发送序列化的 std::wstring,例如,从中文版的 Windows 到使用阿拉伯语 UI 的 Unix 系统。
我不明白我的 Unix 系统(或其他任何系统)如何知道这些 std::wstring 是中文的,我没有看到“代码页”(又名国家语言?)存储在 std 中: :wstring,我是否必须将自己与可能的每个 std::wstring 的代码页相关联?
我肯定错过了一些东西,因为这看起来是我们相互联系的世界中的一个基本问题......
谢谢,
最佳答案
wstring
的目的是允许整个 Unicode 字符集,包括中文和阿拉伯语以及人类已知的所有其他字符集。它几乎完全废弃了代码页的概念 - 字符在基于任何语言的计算机上具有相同的表示。
您可能会在传输过程中遇到一些麻烦,因为 wchar_t
在 Windows 上通常是 16 位,在 Linux 上是 32 位。可能还需要担心一些大端与小端问题。最安全的做法是通过 UTF-8 传输,它将 Unicode 字符编码为明确的 8 位字节序列。
关于windows - 从 "chinese Windows"发送 std::wstring 到 "arabic Windows",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7016368/