首页 > 系统相关 >c++在Linux下把gbk编码转为utf8编码类型

c++在Linux下把gbk编码转为utf8编码类型

时间:2024-06-03 18:57:28浏览次数:15  
标签:std 编码 iconv utf8 gbk len str out

#include <iostream>

#include <string.h>

#include <iconv.h>

#include<memory>

std::string gbk_to_utf8(const std::string &gbk_str) {

size_t in_len = gbk_str.size();

size_t out_len = in_len * 4; // 设置足够大,确保可以存放转换后的UTF-8字符串

std::unique_ptr<char[]> out_buf(new char[out_len]);

const char *in_buff = gbk_str.c_str();

char *out_buff = out_buf.get();

iconv_t cd = iconv_open("UTF-8", "GBK");

if (cd == (iconv_t)-1) {

perror("iconv_open");

return "";

}

if (iconv(cd, &in_buff, &in_len, &out_buff, &out_len) == (size_t)-1) {

perror("iconv");

iconv_close(cd);

return "";

}

iconv_close(cd);

return std::string(out_buf.get(), out_buff - out_buf.get());

}

int main() {

std::string gbk_str = "你好,世界!"; // GBK编码的字符串

std::string utf8_str = gbk_to_utf8(gbk_str);

std::cout << "UTF-8 string: " << utf8_str << std::endl;

return 0;

}

 

标签:std,编码,iconv,utf8,gbk,len,str,out
From: https://blog.csdn.net/m0_52433622/article/details/139417107

相关文章

  • pytest运行报错:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xaf in posit
    pytest运行报错:UnicodeDecodeError:‘gbk’codeccan’tdecodebyte0xafinposition82:illegalmultibytesequence  D:\Python\environment\python3.9.7\python3.exeD:/Python/nas_autotest/run.pyTraceback(mostrecentcalllast):File"D:\Python\......
  • 【程序异常记录】01 --- python编码问题
    问题描述df=pd.read_csv(meter_path,encoding='utf-8')指定utf-8编码读取后赋值到rosmsg进行topicpublish报错error:fieldmeters_result[].task_meter_id.meter_id.alias_nameisanon-asciistringtips:str通过encode()方法可以编码为指定的bytes。反过来,当从网络或......
  • leetCode.89. 格雷编码
    leetCode.89.格雷编码题目思路代码classSolution{public:vector<int>grayCode(intn){vector<int>res(1,0);//n=0时,之后一位0while(n--){//想要实现对象超下来,就从末尾开始,让vector里面加元素for(......
  • ffmpeg编码之实现YUV转换成H264
    方法1:命令转换#转换ffmpeg-s720*1280-pix_fmtyuv420p-iinput.yuv-vcodeclibx264-b:v4096k-bf0-g10-r30output.h264#播放ffplayoutput.h264方法2:代码转换 main.c#include"libavutil/log.h"#include"libavutil/avutil.h"#include......
  • 编码的选择
    因“ø”这个特殊字符,为究竟编码在php上选择,琢磨到真的累,收获不多,考虑到随笔得有更新了,不然某小会嘀咕起某老的懒来,也平整一下所得。前篇有提过,vscode选择编码改不回去的问题,至少今日是清晰了些了,要想在vscode上换编码有保证,文件须是ANSI类型,再在这个基础上用vscode选择打开或另......
  • Angular 18+ 高级教程 – Coding Style Guide 编码风格
    前言Angular从v14开始大改特改,改最多的就是编码风格。以前偏向classfirst,@Decoratorfirst,mutablefirst。现在偏向functionfirst,immutablefirst。本篇主要是探讨v14后,尤其是Signal后的Angular编码风格,看看怎么写会比较合理舒服......
  • 编码转换统一防止乱码
    publicstaticvoidmain(String[]args)throwsUnsupportedEncodingException{Stringorigin=newString("元字符".getBytes(StandardCharsets.UTF_8),"iso8859-1");StringfileName1=newString(origin.getBytes("iso88......
  • jmeterQA之Sampler响应结果编码修改(解决乱码问题)
    #问题分析当响应数据或响应页面没有设置编码时,jmeter会按照jmeter.properties文件中,sampleresult.default.encoding设置的格式解析默认ISO-8859-1,单字节解析中文肯定不对,配置片段如下#Theencodingtobeusedifnoneisprovided(defaultISO-8859-1)#sampleresult.def......
  • 一文搞透常见的Python编码陷阱(上)(分析+案例)
    一个认为一切根源都是“自己不够强”的INTJ个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数Python-3.12.0文档解读目录一、别忘了冒号1.if语句2.while语句3.for语句4.函数定义5.类定义6.try/except语句7.with语句......
  • mac,linux 查看文件编码
    查看文件编码可以通过以下几种方式:在类unix编程时,在读取文本的时候会遇到文本的编码问题,这时候就要查看文件内容的编码了,下面是查看编码的几种方式1.在Vim中可以直接查看文件编码:setfileencoding即可显示文件编码格式。如果你只是想查看其它编码格式的文件或者想解决用Vim......