Unicode 到整数转换 visual studio 错误

Unicode to integer conversion visual studio bug

我正在尝试将 unicode 字符转换为整数,但在 visual studio 中遇到了一个错误,不确定是错误还是我做错了什么

该项目有 unicode 字符集而不是多字节。

#include <windows.h>
#include <iostream>

int main()
{
    constexpr int a = L'';

    printf("%i\n", a);
    std::cout << a << std::endl;

    return 0;
}

问题: 鼠标悬停变量 'a' 显示它的 129408 或 0x1F980 是正确的但是当它打印到控制台时我得到 55358

我创建了一个新项目并编写了相同的代码,它打印出正确的值,但是在将同一项目从 unicode 切换到多字节再切换回 unicode 后,它产生了这个问题,不知道如何解决这个问题。

Visual Studio 中的宽字符只有 16 位,这意味着它们不会持有大于 65535 的值。您将获得以 UTF-16 编码的字符的前半部分,即 d83e dd80 .