C语言-解决Windows cmd utf8中文乱码

By: Ailson Jack
Date: 2021.04.03
个人博客:http://www.only2fire.com/
本文在我博客的地址是:http://www.only2fire.com/archives/132.html,排版更好,便于学习,也可以去我博客逛逛,兴许有你想要的内容呢。

C语言向Console输出UTF-8编码的中文内容时,cmd通常会乱码而Linux的终端却不会。
原因就是cmd的默认编码方式不是utf8,而Linux是。
让cmd不乱码的方式只需要引入stdlib.h头文件,并在输出前执行"chcp 65001"即可:

#include <stdlib.h>

/* windows 控制台支持显示 utf8 编码的中文字符 */
void windows_cmd_support_utf8(void)
{
#ifdef WIN32
    system("chcp 65001 & cls"); //cls 用来清除 chcp 的输出
#endif
}

int main(void)
{
    windows_cmd_support_utf8();

    // 打印输出 utf8 编码的中文字符
}

欢迎关注博主的公众号呀:

如果文中有什么问题欢迎指正,毕竟博主的水平有限。

如果这篇文章对你有帮助,记得点赞和关注博主就行了^_^。
排版更好的内容见我博客的地址:http://www.only2fire.com/archives/132.html
注:转载请注明出处,谢谢!^_^

C语言中,ISO-8859-1)是一种单字节字符集,它包含了大部分西欧语言的常用字符,而UTF-8 是一种变长的Unicode 编码,支持全球范围内的字符。 对于简单的ASCII字符(0x00到0x7F),ISO-8859-1 和 UTF-8 是等价的,所以如果你只需要处理这样的字符,无需特殊转换。但是,如果涉及到非ASCII字符,你需要进行编码转换。 这里提供一个简化的示例,展示如何将ISO-8859-1编码转换成UTF-8,注意这只是基本的转换,实际应用中可能需要更复杂和全面的库: ```c #include <stdio.h> #include <string.h> // 将ISO-8859-1字符串转换为UTF-8 char* iso_to_utf8(const char *src) { unsigned int utf8_len = strlen(src); char *dst = (char*)malloc(utf8_len * 4); // 估计最坏的情况,每个字符最多3个字节 for (int i = 0; src[i]; i++) { if (src[i] <= 0x7F) { // ASCII字符,不变 dst[i] = src[i]; } else { // 非ASCII字符,可能是1-4字节 dst[i] = ((src[i] & 0x1F) << 6) | (src[i + 1] >> 2); // 第一部分 if (i + 2 < utf8_len) { dst[i] |= ((src[i + 1] & 0x03) << 12) | ((src[i + 2] >> 6) & 0x3F); // 后续部分 if (i + 3 < utf8_len) { dst[i] |= (src[i + 2] & 0x3F); // 最终部分 i++; // 跳过已处理的两个字节 } } i++; } } dst[utf8_len] = '\0'; // 添加结束符 return dst; } int main() { const char *iso_str = "你好,世界! 翻译成UTF-8"; char *utf8_str = iso_to_utf8(iso_str); printf("ISO-8859-1: %s\n", iso_str); printf("UTF-8: %s\n", utf8_str); free(utf8_str); // 不忘记释放内存 return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jackailson

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值