文件不读取 C 中的 UTF-8 输入

File does not read UTF-8 input in C

提问人:Alexander Jonsson 提问时间:7/1/2023 更新时间:7/1/2023 访问量:71

问:

我有这个代码:

#include <stdio.h>
#define SIZE 100

int main(void) {

   char myWord[SIZE];

   printf("Enter \"blå\": ");
   fgets(myWord, sizeof(myWord), stdin);
   printf("Entered string: %s", myWord);

   return 0;
}

这是我的输出:

Enter "blå": blå
Entered string: bl

为什么不能正确读取输入?我使用本指南将字符编码更改为 UTF-8:fgets

在命令提示符/Windows Powershell (Windows 10) 中使用 UTF-8 编码 (CHCP 65001)

这帮助我打印而不是,但我仍然无法读取用户的输入。我能想到的唯一解决方案是我需要更改 .我是用还是有其他方法?blåbl├Ñstdinlocale.h

我在 Windows 和 VScode 上,MINGW32作为编译器。

C UTF-8

评论

1赞 stark 7/1/2023
在 bash 中正常工作,因此它似乎是您的终端编码。
0赞 Alexander Jonsson 7/2/2023
如果我输入 chcp,则输出为“活动代码页:65001”。这难道不意味着启用了 UTF-8 吗?
0赞 chux - Reinstate Monica 7/2/2023
@Alexander Jonsson,在调试此类时,打印长度,使用换行符并使用哨兵。.你的结果是什么?printf("Entered string: %zu, <%s>\n", strlen(myWord), myWord);
0赞 Mark Adler 7/2/2023
fgets()很好。查看 stackoverflow.com/a/57134096/1180620
1赞 Alexander Jonsson 7/2/2023
@chux - 恢复 Monica Strlen 返回 2,输出仍为 bl。

答: 暂无答案