C语言 UTF-8与GBK编码互转,一个头文件搞定!不使用第三方库,纯C语言跨平台

C语言 UTF-8与GBK编码互转,一个头文件搞定!不使用第三方库,纯C语言跨平台代码 UTF 8 和 GBK 编码互转 一个头文件搞定 不使用第三方库 纯 C 语言跨平台

大家好,欢迎来到IT知识分享网。

背景:

项目需要在mips32架构的freertos系统上将输入的汉字、标点符号、数字、字母等转成机内码输出,第一个想到的办法是移植第三方库进行编码转换,网上搜了一圈libiconv、ICU库都可以实现,但是在我的项目上移植编译各种报错、非常痛苦。遂学习了一番,在计算机C语言编码中,汉字以UTF-8格式存储,想要转成机内码也就是GBK码输出还有一种方法就是对照码表进行转换。

源码

#include <stdio.h> #include "gbk.h" void hex_data_to_log_data(unsigned char *src, int len, char *dst) { 
    int i = 0; int index = 0; char buff[1024] = { 
   0}; for (i = 0; i < len; i++) { 
    index += sprintf(buff + index, "%02x", src[i]); index += sprintf(buff + index, " "); } if (strlen(buff) > 0) strcpy(dst, buff); } int get_gbk_len(char *str) { 
    char *p = str; int len = 0; if (p == NULL) return 0; while (*p != 0x00) { 
    len++; p = p + 1; } return len; } int main() { 
    char utf[] = "你好"; char utf_hex[2048] = { 
   0}; char gbk_hex[2048] = { 
   0}; unsigned char gbk[2048] = { 
   0}; strcpy(gbk, utf_to_gbk(utf)); hex_data_to_log_data((unsigned char *)gbk, get_gbk_len(gbk), gbk_hex); hex_data_to_log_data((unsigned char *)utf, get_gbk_len(utf), utf_hex); printf("原文:%s\n", utf); printf("UTF 编码:%s\n", utf_hex); printf("GBK 编码:%s\n", gbk_hex); } 

代码解释:

代码非常简单,测试将汉字“你好”转成GBK编码并转成十六进制输出只需要包含一个头文件gbk.h,即可实现UTF-8编码与GBK编码互转。由于gbk.h附带码表整个文件非常大这里仅截图展示,源代码放在下方链接。整个实现.c和.h文件只用到一些C语言标准头文件可跨平台运行。(如果资源暂时未通过审核可评论留言我发给你)

编码转换头文件gbk.h获取

在这里插入图片描述

在线编码转换工具网站验证

PS:大部分在线汉字转UTF-8其实都是转成unicode编码,这边推荐一个网站

在线汉字转UTF-8

输出结果展示

在这里插入图片描述

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/113971.html

(0)
上一篇 2025-12-11 15:26
下一篇 2025-12-11 15:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信