【发布时间】: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。