我尝试打印"Text här"
,然后打印出"Text hôr"
。
"ö"
变为"+"
,"å"
变为"Ô"
。
以下是整个代码。
#include <iostream>
int main()
{
std::cout << "Text här";
return 0;
}
我使用visual studio 2015.可能导致这种情况的原因是什么?我将如何修复它?
答案 0 :(得分:2)
这只是可执行文件中使用的字符编码与控制台窗口中使用的字符编码不匹配。
您可以通过chcp
命令更改控制台窗口的字符编码。
您可以手动或例如在你的程序中:
system( "chcp 1252 >nul" );
为避免大多数编码问题并处理国际字符,您可以使用Unicode i / o。
但是,C ++标准库的支持是不存在的,这意味着使用特定于平台的功能,其次,控制台窗口基本上限于Unicode的基本多语言平面,对应于原始的16位Unicode,因为原始的API设计。
在实践中,这些问题和其他问题意味着初学者的探索性代码和专业的可移植代码之间存在差异。
您可能会发现以下内容有用:(How can I make Unicode iostream i/o work in both Windows and Unix-land?)