Unicode到整数的转换visual studio bug



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

项目使用unicode字符集,而不是多字节。

#include <windows.h>
#include <iostream>
int main()
{
constexpr int a = L'🦀';
printf("%in", a);
std::cout << a << std::endl;
return 0;
}

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

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

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

最新更新