C 语言 - Unicode 解决中文问题
Posted sch01ar
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C 语言 - Unicode 解决中文问题相关的知识,希望对你有一定的参考价值。
问题:
打印一句中文
#include <stdio.h> int main() { char str[] = "你好,世界"; printf("%s ", str); return 0; }
运行结果
接下来打印这句中文中的“好”字
#include <stdio.h> int main() { char str[] = "你好,世界"; printf("%c ", str[1]); return 0; }
运行结果
它打印出来的是问号
原因:
char 类型是为 ascii 定义的,每个字符为 1 个字节,而中文占两个字节
解决方案:
使用 Unicode 编码
#include <stdio.h> #include <wchar.h> #include <locale.h> int main() { wchar_t str[] = L"你好,世界"; // 使用 wchar_t 定义 Unicode 编码的字符类型,L 表示每个字符为两个字节 setlocale(LC_ALL, "Chs"); // 设置语言环境为简体中文 wprintf(L"%lc ", str[1]); // 这里要用 L 和 l return 0; }
运行结果
以上是关于C 语言 - Unicode 解决中文问题的主要内容,如果未能解决你的问题,请参考以下文章
我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段