注册 登录
编程论坛 C语言论坛

为什么程序不能输出藏文?请问老师们有没有解决办法?

东南风 发布于 2021-03-07 18:02, 1849 次点击
程序代码:

#include <wchar.h>
#include <locale.h>

int main() {
    wchar_t a = L'';  //中文汉字
    wchar_t b = L'';  //日文片假名
    wchar_t c = L'';  //藏文

   
//将本地环境设置为简体中文
    setlocale(LC_ALL, ".936");

    //使用通用的 wprintf 输出宽字符
    wprintf(L"Wide chars: %lc %lc %lc\n", a, b, c); //必须使用宽字符串
    return 0;
}
6 回复
#2
zbjzbj2021-03-07 18:10
操作系统字符设置问题。
学c语言最好只用E文。简洁,原生。
一旦学成了,改换字符集,那不是个事。
现在很少用C语言直接做应用程序的。都用c++,c#及其他高级语言。
c语言用来学习,打基础。
现在纠结于字符集,事倍功半。
#3
apull2021-03-07 18:21
手机下gcc运行正常,你换个编译器看看。

只有本站会员才能查看附件,请 登录

#4
东南风2021-03-07 19:50
回复 2楼 zbjzbj
谢谢老师指点!刚刚接触c,我用的是vscode,终端是cmd, 即使用chcp设置为65001,在显示藏文时还是一个?。
#5
东南风2021-03-07 19:59
回复 3楼 apull
谢谢版主大人!我的环境是window 10,在vs2017,vscode和sublime text3中都测试过,藏文显示为一个?。(编译器:x86_64-posix-seh)

[此贴子已经被作者于2021-3-7 20:06编辑过]

#6
rjsp2021-03-08 10:59
".936" 是 gbk 编码吧,
gbk 编码中有 ༄ 吗?
#7
东南风2021-03-08 13:48
回复 6楼 rjsp
谢谢版主提示!我也注意到了这个问题,gbk(936)中肯定没有藏文字符,但在setlocale中怎样设置utf8呢?在vscode中试了几种语法(zh-CN.UTF-8,.65001)都不能成功识别。奇怪的是3楼版主在手机上测试我的代码可以成功输出藏文来,这又貌似与setlocale设置无关?在vscode中源代码是用UTF8保存的,cmd活动代码页成功设置为65001,就是死活输不出藏文来。希望得到各位大佬的指点。
1