【发布时间】:2017-04-27 16:20:11
【问题描述】:
int main() {
std::cout << "\u2654" << std::endl; // Result #1: ♔
std::cout << U'\u2654' << std::endl; // Result #2: 9812
std::cout << U'♔' << std::endl; // Result #3: 9812
return 0;
}
我无法理解 Unicode 如何与 C++ 协同工作。为什么字面量在终端不输出字面量?
我有点想要这样的东西;
char32_t txt_representation() { return /* Unicode codepoint */; }
注意:源是 UTF-8,终端也是如此,它位于 macOS Sierra、CLion 上。
【问题讨论】:
-
为什么要混合宽字符输入和窄字符输出?
-
你认为
L'\u2654'等的类型是什么...(提示:它不是char)。没有"\2654"不是std::string -
只有第一个是(可能)
utf8,第二个 2 是utf32或ucs16宽字符编码。为了确保第一个使用u8"\u2654"。 -
@Galik:哦,你说得对!我会改变的。我对所有这些编码都很困惑,所以请理解一下..
-
后续问题可能是 Entalpi 想问的问题:stackoverflow.com/questions/41107667/…
标签: c++ unicode character-encoding