C++ 如何将unicode字符转换为int

m.r*_*226 1 c++ windows unicode visual-c++

我想将 Unicode 字符(波斯语)转换为 int。\n根据列表,Unicode 编号\'\xd8\xa2\'U+0622

\n\n

假设我想给U+0622整数值。我写了这段代码:

\n\n
unsigned int Alef = (unsigned int)\'\xd8\xa2\';\nstd::cout << Alef << std::endl;\n
Run Code Online (Sandbox Code Playgroud)\n\n

输出:

\n\n
\n

63

\n
\n\n

正确答案是 1570,正如您所看到的,输出是错误的。我猜它只转换 Unicode 字符的第一个字节。

\n\n

我如何转换该 Unicode 字符才能给出正确答案?

\n

poi*_*ess 5

尝试将字符表达为wchar文字:

\n\n
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::wcoutnot std::cout,因为 cout 用于单字节字符,而 wcout 用于wchar类型。

\n\n

编辑:记事本确实保存为 Unicode

\n