【发布时间】:2019-04-19 16:57:48
【问题描述】:
编程语言:C
IDE:代码块
编译器:GNU GCC 编译器
操作系统:Windows 7
我的 cmd 默认为代码页 852,所以我决定使用 setlocale(),将其设置为代码页 437
setlocale(LC_ALL, "English_United States.437")
但这样做会使一些字母/符号显示为“?”反而。有什么办法解决这个问题?
【问题讨论】:
-
也许您需要将文件保存为 UTF8 或切换到 Unicode TrueType 字体,如“Lucida Console”。您在终端中使用“光栅字体”吗?
-
@KeineLust “Lucida Console”和“Consolas”仍然给我“?”并且使用 for 循环打印字母/符号以递增 char 变量,每次递增都会打印出该变量。
-
for(int x=0; x
-
setlocale()调整程序解释输入和编码输出的方式。它对其他程序或操作系统如何做同样的事情没有任何作用。如果两个程序(例如您的程序和您启动它的终端窗口)想要交换文本,那么他们需要就区域设置的相关方面达成一致。你不能只改变它的一方面并期望得到满意的结果。
标签: c locale codepages setlocale codepage-437