【问题标题】:Visual Studio doesn't print the correct nordic characters [duplicate]Visual Studio 不打印正确的北欧字符 [重复]
【发布时间】:2017-04-10 15:14:18
【问题描述】:

我尝试打印出"Text här",结果打印出"Text hôr""ö" 变成"+""å" 变成"Ô"

这是整个代码。

#include <iostream>

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

我使用的是 Visual Studio 2015。这可能是什么原因造成的,我该如何解决?

【问题讨论】:

  • 或许你可以在这里找到答案:stackoverflow.com/questions/1371012/…
  • 直到今天,Windows 上控制台的默认配置仍然基于 1982 年的明智选择。很难修复,太多的关键业务应用程序认为它仍然是 1982 年。告诉你的文本编辑器。在 VS 中,使用 File > Save As > Save button > Code page 437 上的箭头来执行此操作。
  • 标题实际上应该是“我的程序没有打印正确的北欧字符”
  • @HansPassant:就源编码向编译器撒谎是非常糟糕的建议。在很多方面。

标签: c++ visual-studio-2015 character


【解决方案1】:

这只是可执行文件中使用的字符编码与控制台窗口中使用的字符编码不匹配。

您可以通过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?)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    相关资源
    最近更新 更多