2024-09-27 buildroot C和语言将 中文的GBK编码转换为 UTF-8 的代码, printf 显示出来,使用 iconv 库去实现。

一、GBK 的英文全称是 "Guobiao Kuozhan",意为 "National Standard Extended"。它是对 GB2312 编码的扩展,用于表示更多汉字和符号

       GBK(国标扩展汉字编码)是一种用于简体中文和繁体中文字符的编码方式,属于汉字编码的扩展,主要用于 Windows 和某些其他操作系统。以下是一些关于 GBK 编码的要点:

  1. 编码范围

    • GBK 编码扩展了 GB2312 编码,支持的字符总数达 21,000 多个,涵盖了常用的汉字、符号和标点。
  2. 字节结构

    • GBK 编码的字符通常由一个或两个字节组成:
      • ASCII 字符(如英文字母和数字)用单个字节表示(0x00-0x7F)。
      • 汉字和其他字符使用两个字节表示。
  3. 兼容性

    • GBK 向下兼容 GB2312,这意味着 GB2312 编码的字符在 GBK 中可以直接使用。
  4. 使用场景

    • 在中国大陆的许多软件和操作系统中广泛使用,尤其是在 Windows 平台上。
  5. 与其他编码的比较

    • GBK 与 UTF-8 和其他编码(如 ISO-8859-1)相比,主要用于处理中文文本,UTF-8 是一种更通用的编码方式,支持全球所有语言。
  6. 转换工具

    • 可以使用工具(如 iconv)进行 GBK 与其他编码(如 UTF-8)之间的转换。
  7. 示例

    • 在 C 语言中,可以使用 char 数组表示 GBK 编码的字符串,例如 char gbkStr[] = {0xC1, 0xF5, 0x00}; 表示汉字“刘”。

二、在 UTF-8 编码中,中文字符通常使用 3 个字节表示。以下是一些关于中文 UTF-8 编码的要点:

  1. 编码方式

    • 中文字符(如汉字)在 UTF-8 中占用 3 个字节,字节范围通常为:
      • 第一个字节:0xE0 到 0xEF
      • 第二个字节:0xA0 到 0xBF
      • 第三个字节:0x80 到 0xBF
  2. 示例

    • 汉字“刘”的 UTF-8 编码为 0xE6 0x88 0x91。可以使用 C 语言中的字符串表示:
       

      c

      Copy code

      char utf8Str[] = {0xE6, 0x88, 0x91, 0x00}; // "刘"

  3. 兼容性

    • UTF-8 兼容 ASCII 字符集,因此包含 ASCII 字符的文本在 UTF-8 中也是有效的。
  4. 使用场景

    • UTF-8 是互联网上最常用的编码方式,广泛用于网页、文档和数据库中,支持多种语言的字符,包括中文。
  5. 优点

    • 由于能够表示全球所有字符,UTF-8 在国际化应用中具有明显优势,简化了文本处理和存储。
  6. 工具与库

    • 多种编程语言和库都提供了对 UTF-8 的良好支持,可以轻松进行编码和解码。

三、buildroot C语言代码demo,include iconv.sh,同时确保已经编译出libiconv.so

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iconv.h>void convertGBKToUTF8(const char *gbkStr, char *utf8Str, size_t utf8StrSize) {iconv_t cd = iconv_open("UTF-8", "GBK");if (cd == (iconv_t)(-1)) {perror("iconv_open");exit(1);}char *inBuf = (char *)gbkStr;size_t inBytesLeft = strlen(gbkStr);char *outBuf = utf8Str;size_t outBytesLeft = utf8StrSize;size_t result = iconv(cd, &inBuf, &inBytesLeft, &outBuf, &outBytesLeft);if (result == (size_t)(-1)) {perror("iconv");iconv_close(cd);exit(1);}*outBuf = '\0'; // Null-terminate the UTF-8 stringiconv_close(cd);
}int main() {char gbkStr[] = {0xC1, 0xF5, 0x00}; // GBK 编码的“刘”char utf8Str[100];convertGBKToUTF8(gbkStr, utf8Str, sizeof(utf8Str));printf("%s\n", utf8Str); // 显示 UTF-8 编码的汉字return 0;
}

四、实际测试效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1548324.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

起号半个月GMV 1300W+,视频号这个赛道真香!

双减”后&#xff0c;教育的主阵地重回学校和家庭&#xff0c;特别是家庭教育被赋予了更多的期待&#xff0c;家庭无疑要承担起更多教育职责。 同时亲子关系进一步受到考验&#xff0c;家庭教育除了辅导孩子学习外&#xff0c;更牵涉孩子成长的每个方面、每个点滴&#xff0c;掌…

计算机视觉|机器学习中图片特征向量的提取方式:开启图像世界的钥匙

文章目录 什么是特征向量&#xff1f;常见的图片特征向量提取方法1. **手工设计的特征**SIFT&#xff08;尺度不变特征变换&#xff09;HOG&#xff08;方向梯度直方图&#xff09; 2. **卷积神经网络 (CNN)**3. **预训练模型**4. **自监督学习** 结语 今天我们将一起深入探讨机…

C++:采用模板封装顺序表,栈,队列

1.顺序表&#xff1a; list.hpp #ifndef LIST_HPP #define LIST_HPP #include <iostream>using namespace std;template <class L>class Seqlist { private:L *ptr;L size;L len0;public:void init(L n){//堆区申请空间&#xff08;大小为n&#xff09;this->…

React学习笔记(2.0)

React事件绑定 语法&#xff1a;在对应标签上书写on事件&#xff08;比如onClick,onChange&#xff09;&#xff0c;注意和原生的事件区分&#xff0c;React的事件首字母要大写。 const handleChange(e:any)>{console.log(e);console.log(change事件触发);// e不是原生事件…

IGZO基底无电容DRAM单元前景看好

1.DRAM技术简介 DRAM&#xff08;Dynamic Random Access Memory&#xff0c;动态随机存取存储器&#xff09;是一种用于计算机和其他电子设备中的主存储器类型&#xff0c;其主要由存储单元阵列构成&#xff0c;而每一个存储单元由一个电容器和一个晶体管组成&#xff0c;如图…

python-金币/打分/小理学数列3

一&#xff1a;金币 题目描述 国王将金币作为工资&#xff0c;发放给忠诚的骑士。 第一天&#xff0c;骑士收到一枚金币&#xff1b;之后两天&#xff08;第二天和第三天&#xff09;里&#xff0c;每天收到两枚金币&#xff1b;之后三天&#xff08;第四、五、六天&#xff09…

智慧农业案例 (一)- 自动化机械

橙蜂智能公司致力于提供先进的人工智能和物联网解决方案&#xff0c;帮助企业优化运营并实现技术潜能。公司主要服务包括AI数字人、AI翻译、领域知识库、大模型服务等。其核心价值观为创新、客户至上、质量、合作和可持续发展。 橙蜂智农的智慧农业产品涵盖了多方面的功能&…

【Python基础(一)】

学习分享 一、基本语法1、输出print语句2、常量的写法3、运算符 (/) 与(//)4、字符串5、列表5.1、列表查询元素是否存在5.2、列表查询元素是否存在5.3、身份运算符5.4、列表的增删改查 6、元组6.1、tuple() 7、字典8、函数8.1、值传递8.2、引用传递8.3、函数的传参 二、文件的操…

Java零工市场小程序如何实现一站式服务

零工市场小程序作为一个为自由职业者服务的平台&#xff0c;Java编程语言是其坚实的后盾&#xff0c;为自由职业者提供了良好的服务&#xff0c;提高了用户体验感和工作效率&#xff0c;实现了一站式服务。 首先&#xff0c;用户只需在微信中就可使用&#xff0c;注册完善个人信…

基于RustDesk自建远程桌面服务

最近向日葵越来越难用了&#xff0c;官方好像限制了免费用户的带宽&#xff0c;但是限制的有点过头了&#xff0c;卡的基本没法用。 向日葵的平替todesk对于免费用户又有时长限制&#xff0c;对于经常用的小伙伴不大友好。 咱也不是说非得白嫖&#xff0c;但是向日葵和todesk这…

Leetcode 除自身以外数组的乘积

class Solution {public int[] productExceptSelf(int[] nums) {int length nums.length;//一维数组 answer[]存储最终的结果//首先从左往右记录乘积&#xff0c;暂时存储到一维数组 answer[] 中int[] answer new int[length];//先从左往右, 由于由于第一个元素左边没有元素&…

【漏洞复现】灵当CRM multipleUpload.php接口处存在文件上传漏洞

》》》产品描述《《《 灵当CRM致力于为企业提供客户管理数字化、销售管理自动化、服务管理智能化、项目管理一体化的个性化CRM行业解决方案,构建全生命周期的数字化管理体系,实现可持续的业绩增长! 》》》漏洞描述《《《 灵当CRM系统接口multipleUpload.php文件上传漏洞&#x…

艺术家刘欢近况时隔5年再登《歌手》舞台,国家级嗓音引发热议

在我国&#xff0c;有这样一位艺术家&#xff0c;他自上世纪80年代至今&#xff0c;用一首首脍炙人口的歌曲和他那独特的嗓音陪伴数代人成长。凭借音乐上的造诣和天赋&#xff0c;他被众多网友誉为“音乐教父”&#xff1b;攀登至领域巅峰时&#xff0c;他不忘提携后辈&#xf…

通俗易懂的Latex使用步骤

目录 Latex的安装和基本框架 TeX Live和TeXstudio的安装 Latex基本框架 标题 目录 列表 字体设置 图片 单张图片 多张图片&#xff08;以两张图片为例&#xff09;&#xff1a; 多张图片&#xff08;以三张图片为例&#xff09;&#xff1a; 公式 公式复制神器: …

高性能计算应用优化实践之WRF

WRF&#xff08;Weather Research Forecast&#xff09;模式是由美国国家大气研究中心&#xff08;NCAR&#xff09;、国家环境预报中心&#xff08;NCEP&#xff09;等机构自1997年起联合开发的新一代高分辨率中尺度天气研究预报模式&#xff0c;重点解决分辨率为1&#xff5e…

jinaai/jina-embeddings-v2-base-zh向量模型报错解决

报错信息 OSError: We couldn’t connect to ‘https://huggingface.co’ to load this file, couldn’t find it in the cached files and it looks like jinaai/jina-bert-implementation is not the path to a directory containing a file named configuration_bert.py. 报…

智能新宠:BabyAlpha A2开启家庭机器人新时代

具身智能领域的“疯狂”&#xff0c;已经迈入了全新的阶段&#xff01;让我们一起来看看这段视频&#xff1a;一个人形机器人在前面奔跑&#xff0c;一群机器狗紧随其后&#xff1b;接着是人追赶机器狗&#xff0c;随后机器狗又追逐人……视频最后&#xff0c;那个机器人似乎还…

2025台球展,2025河南台球及配套设施展览会3月举办

阳春三月&#xff0c;年度招商季&#xff0c;壹肆柒中国国际台球产业博览会助力全国台球企业拓市场&#xff1b; 2025中国&#xff08;郑州&#xff09;国际台球产业博览会&#xff08;壹肆柒台球展&#xff09; The 2025 China (Zhengzhou) International Billiards Industry…

Uncaught TypeError: (intermediate value).globEager is not a function

在运行代码的时候console提示报错 Uncaught TypeError: (intermediate value).globEager is not a function 解决方案&#xff1a; 在小程序源码搜索globEager&#xff0c;找到对应的文件&#xff0c;把文件中的globEager 替换成glob&#xff0c;下面贴一下源码替换例子&…

Splashtop 在2024年 CybersecAsia 读者之选奖项评选中荣获新星奖

2024年9月26日 新加坡 安全远程访问和支持解决方案领域的领先企业 Splashtop 在第五届 CybersecAsia 读者之选奖项评选中荣获新星奖。该奖项的评选人员包括首席信息安全官、技术领袖和网络安全从业者&#xff0c;旨在表彰亚太地区网络安全领袖在行业中发挥的关键作用、取得的创…