windows - 从 "chinese Windows"发送 std::wstring 到 "arabic Windows"

标签 windows unix unicode character-encoding internationalization

我有一个套接字,我通过它发送序列化的 std::wstring,例如,从中文版的 Windows 到使用阿拉伯语 UI 的 Unix 系统。

我不明白我的 Unix 系统(或其他任何系统)如何知道这些 std::wstring 是中文的,我没有看到“代码页”(又名国家语言?)存储在 std 中: :wstring,我是否必须将自己与可能的每个 std::wstring 的代码页相关联?

我肯定错过了一些东西,因为这看起来是我们相互联系的世界中的一个基本问题......

谢谢,

最佳答案

wstring 的目的是允许整个 Unicode 字符集,包括中文和阿拉伯语以及人类已知的所有其他字符集。它几乎完全废弃了代码页的概念 - 字符在基于任何语言的计算机上具有相同的表示。

参见 The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)对于初学者。

您可能会在传输过程中遇到一些麻烦,因为 wchar_t 在 Windows 上通常是 16 位,在 Linux 上是 32 位。可能还需要担心一些大端与小端问题。最安全的做法是通过 UTF-8 传输,它将 Unicode 字符编码为明确的 8 位字节序列。

关于windows - 从 "chinese Windows"发送 std::wstring 到 "arabic Windows",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7016368/

相关文章:

python - 如何在 Python - Selenium 中将韩语作为 find_element_by_link_text() 的参数?

windows - 如何批量分支if语句

windows - 系统 DLL 地址空间

windows - 在 Windows 上从 Electron 应用程序安装 VirtualBox 的正确方法

c - 将 C 程序安装到另一台机器上,无需共享代码

linux - 用于在正确路径中运行 Java 类的通用脚本

c - 如何解决C中的SIGSEGV、段错误?

Python/Django/MySQL "Incorrect string value"错误

c# - LINQ to SQL - 从 X WHERE X = "1"选择 Y

r - Theme() 不适用于 ggplot2 Unicode 显示