如何在C语言中正确打印表情符号?代码输出乱码该如何解决?
问题原因
你遇到的乱码是程序输出的UTF-8编码表情字符,被终端用非UTF-8编码(比如Windows默认的GBK编码)解析导致的,同时C程序默认未启用系统区域编码设置,也会导致输出编码异常。
解决步骤
- 首先引入
<locale.h>头文件,在程序初始化时调用setlocale函数启用系统默认区域编码,保证输出编码为系统匹配的UTF-8格式 - Windows系统下运行程序前,先在终端执行
chcp 65001命令,将终端代码页切换为UTF-8编码,同时将终端字体调整为支持Unicode表情的字体(如Consolas、思源黑体等) - Linux/macOS系统默认终端编码为UTF-8,无需额外调整终端配置,仅需修改代码即可正常显示
修正后的可运行代码
#include <stdio.h> #include <locale.h> int main() { setlocale(LC_ALL, ""); printf("\U0001F600"); // 输出😀表情 return 0; }
额外注意事项
- 如果需要输出其他表情,替换对应的Unicode编码即可,比如😁对应
\U0001F601,😂对应\U0001F602 - 如果编译器不支持
\U开头的Unicode转义序列,可直接将表情符号写入printf的字符串参数中,只需确保源代码文件保存为UTF-8无BOM格式即可正常编译运行
内容的提问来源于stack exchange,提问作者google user
相关产品推荐
相关产品推荐

