2016-11-26 53 views
0

我试图打印出"Text här",并打印出"Text hôr""ö"变成"+""å"变成"Ô"Visual Studio不打印正确的北欧字符

这是整个代码。

#include <iostream> 

int main() 
{ 
std::cout << "Text här"; 
return 0; 
} 

我使用visual studio 2015.有什么可能导致这种情况,我将如何解决它?

+5

也许你可以在这里找到答案:https://stackoverflow.com/questions/1371012/how-do-i-print-utf- 8-from-c-console-application-on-windows –

+0

到目前为止,Windows上控制台的默认配置仍然基于1982年的明智选择。很难解决,太多关键业务应用都假定它仍然是1982年。请告诉你的文本编辑器。在VS中,通过保存按钮>代码页437上的文件>另存为>箭头执行此操作。 –

+0

标题实际上应该是'我的程序不打印正确的北欧字符' – stijn

回答

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?