m.r*_*226 1 c++ windows unicode visual-c++
我想将 Unicode 字符(波斯语)转换为 int。\n根据此列表,Unicode 编号\'\xd8\xa2\'
为U+0622
。
假设我想给U+0622
整数值。我写了这段代码:
unsigned int Alef = (unsigned int)\'\xd8\xa2\';\nstd::cout << Alef << std::endl;\n
Run Code Online (Sandbox Code Playgroud)\n\n输出:
\n\n\n\n\n63
\n
正确答案是 1570,正如您所看到的,输出是错误的。我猜它只转换 Unicode 字符的第一个字节。
\n\n我如何转换该 Unicode 字符才能给出正确答案?
\n尝试将字符表达为wchar
文字:
unsigned int Alef = (unsigned int) L'\xd8\xa2';\nstd::cout << Alef << std::endl;\n
Run Code Online (Sandbox Code Playgroud)\n\n但请确保保存为 Unicode,例如 nano 将“\xd8\xa2”转换为“?” 保存之前。我想Windows上的记事本也会这样吗?
\n\n另外,为了补充我的答案,您应该将 Unicode 字符写入std::wcout
not std::cout
,因为 cout 用于单字节字符,而 wcout 用于wchar
类型。
编辑:记事本确实保存为 Unicode
\n