我正在使用C ++中的字符串,并对如何处理挪威字符提出疑问。
如果我运行以下代码;
int main()
{
string norwegian = "BLÅBÆRSYLTETØY";
for (auto &c : norwegian)
cout << c << " => " << static_cast<int>(c) << endl;
return 0;
}
cmd的输出变为:
B => 66
L => 76
┼ => -59
B => 66
ã => -58
R => 82
S => 83
Y => 89
L => 76
T => 84
E => 69
T => 84
Ï => -40
Y => 89
请注意,三个挪威字符打印不正确,ASCII值为负。
有没有办法处理字符串以便它使用正确的字符映射?
修改
解决方案是将代码页从ANSI更改为UTF-7,这可以通过在执行字符串处理的代码之前添加它来完成;
system("chcp 65000");