【问题标题】:Having problems printing åäö (├Ñ ├à | ├ñ ├ä | ├ ├û)打印 åäö 时遇到问题 (├Ñ ├à | ├ñ ├ä | ├ ├û)
【发布时间】:2020-06-13 23:26:19
【问题描述】:

我无法打印瑞典字母 åäö。

#include <stdio.h>
#include <stdlib.h>

int main(void){
   printf("å Å | ä Ä | ö Ö");

   return 0;
}

我得到的输出是:

├Ñ ├à | ├ñ ├ä | ├Â├û

我不明白出了什么问题。我搜索了谷歌和stackoverflow,但没有找到。也许 UTF-8 有问题?

其他可能有用的信息:

我使用的是 Windows 10 和 atom。

解决方案

转到:

系统语言设置 -> 管理语言设置 -> 更改系统 语言环境...

现在选中以下框:

[测试版:使用 Unicode UTF-8 支持全球语言]

这解决了我的问题,我现在可以使用 UTF-8 字符了。

【问题讨论】:

  • utf-8 没有问题,只有 Windows 有问题。据我所知,windows终端不支持utf-8。至少它不是我最后一次使用它。我听说过一些关于微软将增加支持的传言,但我认为这还没有发生。如果您要编写终端应用程序,我只看到四个操作过程: 1. 等待 utf-8 支持。 2. 与不同的扩展 ascii 代码页或 utf-16 争吵 3. 坚持 7 位 us-ascii 4. 获得一个真正的操作系统。
  • 我假设您不能更改编码,Unicode 可能是更好的选择。 Windows 在编码方面一直是一团糟,但据我所知,它完全支持 unicode
  • 将语言设置更改为 Beta/UTF8 会破坏旧的 ANSI 程序(如果您的系统上有任何这些程序)。您应该按照以下答案中的建议使用SetConsoleOutputCP(CP_UTF8),或者使用推荐的方法 UTF16。

标签: c utf-8


【解决方案1】:

Windows 命令窗口(终端、控制台,不管你怎么称呼它)确实支持 UTF-8 已有好几年了,至少根据我的经验,在 Windows 7 上是这样。您需要设置代码页:

mode con cp select=65001

此外,您可以通过编程方式设置输出代码页:

SetConsoleOutputCP(CP_UTF8);

【讨论】:

  • 感谢您的帮助。您的建议很棒,但它对我不起作用,尽管它确实让我走上了通往正确解决方案的正确道路。我的解决方案是执行以下操作:系统语言设置 -> 管理语言设置 -> 更改系统区域设置... 现在选中以下框:[Beta: Use Unicode UTF-8 for global language support] 这解决了我的问题,我现在可以使用 UTF-8 字符了。
  • 您能告诉我们,它为什么不适合您?例如,您是否设置了具有“足够”字符集的字体?
  • 同时更改为printf(u8"å Å | ä Ä | ö Ö") 并确保您的 *.c 文件以 Unicode 格式保存。
猜你喜欢
  • 2012-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
相关资源
最近更新 更多