c - 为什么 setlocale 给我?而不是普通的字母?
问题描述
编程语言:C
IDE:代码块
编译器:GNU GCC 编译器
操作系统:Windows 7
我的 cmd 默认为代码页 852,所以我决定使用 setlocale(),将其设置为代码页 437
setlocale(LC_ALL, "English_United States.437")
但这样做会使一些字母/符号显示为“?” 反而。有任何解决这个问题的方法吗?
解决方案
请注意,ASCII 表的非扩展字符从 0 变为 127,以处理扩展字符使用wchar_t
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
int main(void)
{
wchar_t c;
setlocale(LC_ALL, "English_United States.437");
for (c = 32; c < 256; c++) {
wprintf(L"%lc\n", c);
}
return 0;
}
推荐阅读
- maven - 如何使用自定义 Maven 插件防止构建失败?
- php - 如何创建将数组添加到多维数组
- sql - 比较同一表中的行的最佳方法
- python - Django:对象属性不保存/更新
- ios - 崩溃:线程 1:当我设置自定义单元格 imageView 时 EXC_BAD_ACCESS
- r - 有没有办法在 ggplot 的 geom_image 中添加 alpha 值?
- python - 如何在 Python 中启动自动化程序
- python - 如何连接或连接列表列表中的项目
- php - 结合两个 PHP/MySQL 查询
- javascript - 使用jspdf导出带有图表highchats的数据表php mysql