Linux C++ 字符编码转换 GBK与UTF8互转

  1. Linux 下使用 iconv 命令可以转换文件的编码 iconv -f GBK -t UTF-8 input_file -o output_file
  2. C++ 代码 使用 iconv 函数

iconv 函数签名: size_t iconv(iconv_t cd,、
char **inbuf, size_t *inbytesleft,
char **outbuf, size_t *outbytesleft);
需要注意的是, iconv 函数的 inbuf 参数以及 outbuf 参数会被修改,内部的实现是使用类似
(*p)++ = xxx 的形式操作这两个指针,inbytesleft 会被修改为输入字符串剩余多少没有处理,
outbytesleft 会被修改为 outbuf 还有多少字节没有使用。iconv 返回 (size_t)-1 表示失
败,返回0表示成功,返回大于0表示出现了不可逆转的字符处理。

static std::string CharConv(const std::string& str, const char* fromcode, const char* tocode)
{iconv_t cd = iconv_open(tocode, fromcode);if (cd == (iconv_t)-1) {printf("iconv_open failed, errno: %d\n", errno);return str;}const size_t len = str.length();const size_t outbuflen = len * 2;char inbuf[len] = {0};char outbuf[outbuflen] = {0};memcpy(inbuf, str.data(), len);char *pin = inbuf;char *pout = outbuf;size_t inlen = len;size_t outbufleft = outbuflen;size_t ret = iconv(cd, &pin, &inlen, &pout, &outbufleft);if (ret == (size_t)-1) {printf("iconv failed. errno: %d\n", errno);iconv_close(cd);return str;}iconv_close(cd);return string(outbuf, outbuflen - outbufleft);
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python基础20 面向对象(3)多态、封装、反射

文章目录 一、多态1、什么是多态2、多态小实验 二、封装1、什么是封装2、内部属性的约定 三、反射1、什么是反射2、四个实现自省的函数(1)hasattr(object,name)(2)getattr(object,name,defaultNone)(3)seta…

神秘人暗访:行政窗口为什么要开展神秘顾客调研

在竞争日益激烈的服务市场中,行政窗口作为公共服务的直接提供者,其服务质量的好坏直接关系到政府的形象和公众对政府的信任度。为了更好地满足市民的需求,提升服务质量,开展神秘顾客调查显得尤为重要。神秘顾客调查的必要性包括以…

内网穿透的应用-如何本地部署Elasticsearch搜索分析引擎实现并发布公网远程访问

文章目录 系统环境1. Windows 安装Elasticsearch2. 本地访问Elasticsearch3. Windows 安装 Cpolar4. 创建Elasticsearch公网访问地址5. 远程访问Elasticsearch6. 设置固定二级子域名 Elasticsearch是一个基于Lucene库的分布式搜索和分析引擎,它提供了一个分布式、多…

探索Flask框架:打造优雅而强大的Web应用

在当今互联网时代,Web应用的需求日益增长,而作为开发者,我们需要一个简洁明快、灵活可扩展的框架来满足这些需求。Flask框架作为一个Python微型框架,在其简洁的设计理念和丰富的扩展生态系统之间找到了完美的平衡,为我…

洛谷--二分(Java实现)

洛谷 B3627 立方根 题目描述 给定正整数 n,求 √n​。答案向下取整。 输入格式 仅一行,一个正整数 n。 输出格式 仅一行,一个正整数,表示√n。向下取整输出。 输入输出样例 输入 #1 27 输出 #1 3 输入 #2 100000 输…

ORACLE之 decode函数

语法: DECODE(expression, search1, result1, search2, result2, ..., default_result) 其中,expression是要进行比较的表达式,search1, search2等是可能的值,result1, result2等是对应的结果。如果expression等于search1&#x…

Java类的成员、继承、多态

当谈论Java类的成员、继承和多态时,我们谈论的是面向对象编程的基本概念。让我逐一介绍: 1. **成员**: - **字段(Field)**:也称为属性或变量,用于存储对象的状态信息。 - **方法&#xf…

防御保护第六次作业

需求: 8,分公司内部的客户端可以通过域名访问到内部的服务器 9,假设内网用户需要通过外网的web服务器和pop3邮件服务器下载文件和邮件,内网的FTP服务器也需要接受外网用户上传的文件。针对该场景进行防病毒的防护。 10,我们需要针…

C++模板从入门到入土

1. 泛型编程 如果我们需要实现一个不同类型的交换函数,如果是学的C语言,你要交换哪些类型,不同的类型就需要重新写一个来实现,所以这是很麻烦的,虽然可以cv一下,有了模板就可以减轻负担。 下面写一个适…

日常leetcode代码思路总结(持续更新)

日常leetcode代码思路总结(持续更新) 难易leecode题号题目描述思路简单121. 买卖股票的最佳时机只准一次买卖0表示持有,1表示不持有;dp[0][i] max(dp[0][i-1], -prices[i]);dp[1][i] max(dp[1][i-1], dp[0][i] pric…

Openwrt删除内核patch

环境说明 ubuntu-18.04 openwrt-21.02 安装quilt sudo apt install quilt quilt指令说明 Usage: quilt [--trace[=verbose]] [--quiltrc=XX] command [-h] ...quilt --version Commands are:add fold mail refresh snapshotannotate fork new rem…

基于springboot+vue的中小企业设备管理系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

H 桥逆变方式介绍(双极性)

单极性控制和双极性控制是说IGBT四个管子的控制 前面所说的单极性控制是其中一个管子开通、关闭另外一个管子持续开通 而双极性是四个管子中的两个管子同时导通,同时关断。彼此交替变化 所以当方波出现低电平时,是一对管子同时导通,出现高电…

2.21 Qt day2 菜单栏/工具栏/状态栏/浮动窗口、UI界面、信号与槽

思维导图 使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin",…

成像光谱遥感技术中的AI革命:ChatGPT应用指南

“成像光谱遥感技术中的人工智能革命:ChatGPT应用指南”,这是一门旨在改变您使用人工智能处理遥感数据的方式。将最新的人工智能技术与实际的遥感应用相结合,提供不仅是理论上的,而且是适用和可靠的工具和方法。无论你是经验丰富的…

golang实现延迟队列(delay queue)

golang实现延迟队列 1 延迟队列:邮件提醒、订单自动取消 延迟队列:处理需要在未来某个特定时间执行的任务。这些任务被添加到队列中,并且指定了一个执行时间,只有达到指定的时间点时才能从队列中取出并执行。 应用场景&#xff1…

智慧驿站_智慧文旅驿站_轻松的驿站智慧公厕_5G智慧公厕驿站_5G模块化智慧公厕

多功能城市智慧驿站是在智慧城市建设背景下,所涌现的一种创新型社会配套设施。其中,智慧公厕作为城市智慧驿站的重要功能基础,具备社会配套不可缺少的特点,所以在应用场景上,拥有广泛的需求和要求。那么,城…

高企认定的官方费用

高新技术企业认定并没有直接的“官费”,但是在申请高新技术企业认定过程中,企业可能会涉及到一些与政府部门相关的费用,主要包括以下几种情况: 1.知识产权相关费用:•申请专利、软件著作权等知识产权时需要向国家知识…

#12解决request中getReader()和getInputStream()只能调用一次的问题

目录 1、背景 2、解决方案 2.1、自定义HttpServletRequestWrapper 2.2、JsonRequestHeaderParamsHelper 2.3、HttpServletRequestReplacedFilter 2.4、使用 1、背景 当前系统Content-Type为application/json,参数接收方式采用RequestBody和RequestParam&#…

平时积累的FPGA知识点(10)

平时在FPGA群聊等积累的FPGA知识点,第10期: 41 ZYNQ系列芯片的PL中使用PS端送过来的时钟,这些时钟名字是自动生成的吗? 解释:是的。PS端设置的是ps_clk,用report_clocks查出来的时钟名变成了clk_fpga_0&a…