【发布时间】:2020-05-11 20:23:58
【问题描述】:
我尝试使用新的char8_t 类型初始化一些变音拉丁字母:
constexpr char8_t french_letter_A_1 = 'À';//does not function properly
但是,Visual Studio 2019 建议我以下“由通用字符名称“\u(名称)”表示的字符不能在当前代码页中表示”,并且该字符不能正确显示;如果我尝试将字符显式声明为 u8 之一,例如:
constexpr char8_t french_letter_A_2 = u8'Â';//has error
它甚至会抛出错误“一个UTF-8字符文字值不能占用多个代码单元”;但非变音字母可以成功解释为 UTF-8 字符:
constexpr char8_t french_letter_A_0 = u8'A';//but ASCII letters are fine
我想知道如何使用 Visual C++ 正确声明 UTF-8 字符...或者我误解了 char8_t 的概念,而应该改用其他东西?
编辑:我了解到char8_t 不支持那些非 ASCII 字符。我应该改用什么字符类型?
【问题讨论】:
标签: c++ visual-c++ utf-8 utf c++20