【发布时间】:2019-01-11 03:35:19
【问题描述】:
我了解到 Unicode 可以区分许多用于其他语言(例如中文)的字符。然后,如果我们决定编码,例如 Utf-16,我认为不需要设置语言环境。但实际上并非如此。即使是 Unicode,也需要 _wsetlocale()。我想知道为什么。
_wsetlocale(LC_ALL, L"korean");
wchar_t a = L'개';
wcout << a << endl;
像这样。我设置的字符集不是 MBCS,而是 Unicode。为什么我必须为 unicode 设置语言环境?
【问题讨论】:
-
wchar_t无法存储所有 Unicode 字符,它没有足够的位来存储 -
@JVApen 这取决于系统。一些
wchar_ts 是 32 位的。请参阅cppreference,它说,大到足以表示任何受支持的字符代码点(在支持 Unicode 的系统上为 32 位。一个值得注意的例外是 Windows,其中 wchar_t 是 16 位并保存 UTF-16 代码单元) i>.
标签: c++ unicode locale setlocale