UTF-8、GBK等格式互相转换 【Windows/Linux 通用】

UTF-8、GBK等格式互相转换 [Windows/Linux 通用]

#ifdef WIN32
#include <windows.h>
#endif#ifdef OS_UNIX
#include <iconv.h>
#endif#if defined(WIN32)
void convert_encoding(const char *input, int from_codepage, int to_codepage, char *output)
{int wlen = MultiByteToWideChar(from_codepage, 0, input, -1, NULL, 0);if (0 == wlen)return;wchar_t *wbuf = (wchar_t *)malloc((wlen + 1) * sizeof(wchar_t));MultiByteToWideChar(from_codepage, 0, input, -1, wbuf, wlen);int len = WideCharToMultiByte(to_codepage, 0, wbuf, -1, NULL, 0, NULL, NULL);if (0 == len){free(wbuf);return;}WideCharToMultiByte(to_codepage, 0, wbuf, -1, output, len, NULL, NULL);free(wbuf);
}
#else
void convert_encoding(const char *input, const char *from_encoding, const char *to_encoding, char *output)
{iconv_t cd = iconv_open(to_encoding, from_encoding);if (cd == (iconv_t)-1)return;size_t in_len = strlen(input);size_t out_len = in_len * 2; // 输出长度最多为输入长度的2倍char *in_ptr = input, *out_ptr = output;size_t ret = iconv(cd, &in_ptr, &in_len, &out_ptr, &out_len);if (ret == (size_t)-1){iconv_close(cd);return; // 转换失败}*out_ptr = '\0'; // 添加字符串结尾iconv_close(cd);
}
#endif// 用法例:// 从共享内存取到UTF-8格式的字符串res,转换为GBK格式字符串tmpstr
#ifdef WIN32convert_encoding(res, CP_UTF8, CP_ACP, tmpstr);
#elseconvert_encoding(res, "UTF-8", "GBK", tmpstr);
#endif

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

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

相关文章

2010-2024年别克维修手册和电路图线路接线图资料更新

经过整理&#xff0c;2010-2024年别克汽车全系列已经更新至汽修帮手资料库内&#xff0c;覆盖市面上99%车型&#xff0c;包括维修手册、电路图、新车特征、车身钣金维修数据、全车拆装、扭力、发动机大修、发动机正时、保养、电路图、针脚定义、模块传感器、保险丝盒图解对照表…

【DevOps】Mysqldump 使用详解

目录 一、基本用法 1、导出整个数据库 2、导出指定表 3、导出特定数据 4、导出结构 5、 导出数据 二、高级用法 1、使用选项 2、压缩备份文件 3、 使用管道 4、使用脚本 5、 使用事件调度器 三、导入数据 1、 导入整个数据库 2、导入指定表 3、导入部分数据 四…

Qt 界面上控件自适应窗体大小 - 随窗体缩放

Qt 界面上控件自适应窗体大小 - 随窗体缩放 引言一、在Qt Designer上设置二、参数详解三、参考链接 引言 添加布局&#xff0c;设置控件的minimumSize、maximumSize和sizePolicy可以使其跟随窗体进行自适应缩放 - 如上图所示。 一、在Qt Designer上设置 在代码中设置效果一致…

HTML.

HTML:超文本标记语言&#xff08;Hyper Text Markup Language&#xff09; 超文本&#xff1a;不同于普通文本&#xff0c;可以定义图片&#xff0c;音频&#xff0c;视频等内容 标记语言&#xff1a;由标签构成的语言 HTML标签都是预定义好的HTML代码直接在浏览器中运行&#…

一个变声器项目-GPT-SoVITS

网址 https://github.com/RVC-Boss/GPT-SoVITS 看演示功能很强大&#xff0c;而且mac上也能用&#xff0c;我还没安装&#xff0c;搜了几篇文章&#xff0c;看着安装挺详细的&#xff0c;先记录一下&#xff0c;以后没准能用到 https://blog.csdn.net/zcxey2911/article/det…

JVM之【运行时数据区】

JVM简图 运行时数据区简图 一、程序计数器&#xff08;Program Counter Register&#xff09; 1.程序计数器是什么&#xff1f; 程序计数器是JVM内存模型中的一部分&#xff0c;它可以看作是一个指针&#xff0c;指向当前线程所执行的字节码指令的地址。每个线程在执行过程中…

深度神经网络——什么是生成式人工智能?

1.引言 生成式人工智能最近引起了很大的关注。 该术语用于指依赖无监督或半监督学习算法来创建新的数字图像、视频、音频和文本的任何类型的人工智能系统。 麻省理工学院表示&#xff0c;生成式人工智能是过去十年人工智能领域最有前途的进展之一。 通过生成式人工智能&#…

AI智能体|手把手教你使用扣子Coze图像流的文生图功能

大家好&#xff0c;我是无界生长。 AI智能体&#xff5c;手把手教你使用扣子Coze图像流的文生图功能本文详细介绍了Coze平台的\x26quot;图像流\x26quot;功能中的\x26quot;文生图\x26quot;节点&#xff0c;包括创建图像流、编排文生图节点、节点参数配置&#xff0c;并通过案例…

ESP8266 Wi-Fi模块与STM32的连接教程

本文将详细介绍如何将ESP8266 Wi-Fi模块与STM32单片机连接&#xff0c;并实现无线通信功能。通过本教程的学习&#xff0c;您将能够掌握ESP8266模块的基本使用方法和STM32单片机的编程技巧&#xff0c;为后续的物联网和嵌入式系统开发打下坚实的基础。 一、引言 在物联网和嵌入…

Layui设置table表格中时间的显示格式

1、问题概述? 【数据库中的时间格式】 【Layui中table表格默认的显示格式】 默认的格式中会显示时间的毫秒单位,但是这个毫秒有时候是不需要的。 总结:这个时候我们就需要定义table表格中的时间显示格式。 2、解决办法? 【解决后时间的显示格式】 【解决办法1:通过字符…

Linux基础 (九):Linux 进程复制与替换

各位看官&#xff0c;本篇博客干货满满&#xff0c;请耐下心来&#xff0c;慢慢吸收&#xff01;哈哈哈&#xff0c;内功一定会大增&#xff01; 目录 一、printf 函数输出问题 1.1 第1个示例代码 1.2 第2个示例代码 1.3 分析与结论 二、主函数参数介绍 三、复制进程 fo…

什么叫Java spring boot

Spring Boot是一个基于Spring框架的开源Java框架&#xff0c;用于简化创建独立的、生产级的Spring应用。它通过提供一系列默认配置和自动化设置&#xff0c;减少了开发人员在配置方面的工作&#xff0c;从而使得Spring应用的开发更加快速和简单。 Spring Boot的主要特点包括&a…

Android 处理音频焦点,解决音乐播放冲突的问题

1. 音频焦点是什么 在Android中&#xff0c;两个或多个 Android 应用可以同时将音频播放到同一输出流&#xff0c;系统会将所有音频混合在一起。 但是多数情况下&#xff0c;这对于用户来说是感到困惑的。为了避免多个应用的多个音频一起播放&#xff0c;Android 引入了“音频…

【百度智能体】零代码创建你的 AI 宠物助手

前言 今天给大家介绍一下百度的 AI 产品 – 百度智能体&#xff0c;在文心智能体平台你可以0代码就可以创建出属于自己的 AI 机器人&#xff0c;几乎可以选择任何你想要的领域或者行业机器人&#xff0c;进行无代码打造自己的对话助手&#xff0c;本文将介绍文心智能体&#x…

java —— MySQL 操作

一、常用 MySQL 语句 &#xff08;一&#xff09;创建数据库 create database 数据库名&#xff1b; 例如&#xff1a;创建一个名为 hello 的数据库 create database hello; 注&#xff1a;如果起初没有任何数据库&#xff0c;那么在建立连接的时候&#xff0c;地址 String …

oracle的cbo怎么使用cbo和rule的区别

Oracle CBO的使用与RBO的区别 一、Oracle CBO的使用 Oracle的基于成本的优化器&#xff08;CBO&#xff09;在Oracle 7中引入&#xff0c;但在Oracle 8i中才变得成熟。CBO会根据SQL语句的预计成本&#xff08;这里的成本主要指CPU和内存的使用&#xff09;来选择最优的执行计…

【OpenCV 基础知识 18】对两图像按位与操作

cvAnd是opencv的一个库函数&#xff0c;功能是计算两个数组的按位与的结果。 计算两个数组的每个元素的按位与 void cvAnd( const CvArr* src1, const CvArr* src2, CvArr* dst, const CvArr* maskNULL ); src1 第一个原数组 src2 第二个原数组. dst 输出数组 mask 操作覆盖面&…

Kafka消息丢失处理方式,消息丢失与消费失败区别和分别的处理

Kafka 消息丢失的处理方式可以从生产者、Broker 和消费者三个角度来考虑&#xff0c;以确保消息的可靠传递。以下是一些关键的处理措施&#xff1a; Kafka消息丢失处理方式 1. 生产者端的处理方式&#xff1a; 使用生产者确认&#xff08;acks配置&#xff09;&#xff1a;通…

jmeter之MD5加密接口请求教程

前言&#xff1a; 有时候在项目中&#xff0c;需要使用MD5加密的方法才可以登录&#xff0c;或者在某一个接口中遇到 登录获取token后才可以进行关联&#xff0c;下面介绍下遇到的常见使用 一、第一种方法&#xff1a;使用jmeter自带的函数助手digest 选择工具&#xff0c;选择…

高效的大型语言模型适应方法:提升基础性的解决方案

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…