linux 下中文编码转换问题

2023-05-16

目标:接收网络传过来的字节序,转换字符串

全英文的情况下直接保存string即可,带中文的情况试了好久故做如下记录。

1. 首先确认gcc 应该是utf-8的格式来存储字符串的

通过cmake 加入-fexec-charset=xxx报错如下

add_compile_options(-fexec-charset=xxx)

     /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed
     /usr/include/x86_64-linux-gnu
     /usr/include
    End of search list.
    cc1plus: error: conversion from UTF-8 to GBKA not supported by iconv

2. 确认网络传输的字节格式

由于网络传来的数据是GB2312, 通过gdb变量内容显示

gdb) p m_dataBuffer
$1 = std::vector of length 65536, capacity 65536 = {206 '\316', 210 '\322', 

“我” 的GB2312编码:CED2,正好和发送内容一致。所以首先想着改成GB2312来存字符串,这样就不用转换接收到的数据。

编译指定上面的属性为GB2312,但是偿试了几次,调试发现字符串并没有显示成中文,还是两个字节的CE D2。

3. 转换成UTF-8

最后还是把接收的字节,转换成utf-8存储在string。

调用m_iconv = iconv_open(toCharset, fromCharset);包含头文件#include <codecvt>。

然后调用转换接口,iconv(m_iconv, &input, static_cast<size_t*>(&inLen),
        &output, static_cast<size_t*>(&outLen));

由于utf-8 可能是4个字节的,这个地方也把自己坑了,一直没转换成功....

output需要是input接收字节的2倍

std::unique_ptr<char*> dataBuffer = std::make_unique<char*>(new char[size * 2 + 1]);

这样再调API时就成功,显示中文了。

关注 关注
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux 下中文编码转换问题 的相关文章

随机推荐

  • 李沐:用随机梯度下降来优化人生

    用SGD来优化人生 要有目标目标要大坚持走痛苦的卷可以躺平四处看看快也是慢赢在起点很远也能到达独一无二简单最好 转载 xff0c 用随机梯度下降来优化人生1 xff1a https zhuanlan zhihu com p 41400931
  • Ubuntu18.04 + kinova joca2机械臂 + RealSense D435i深度相机进行eye to hand手眼标定

    文章目录 前言一 前期准备1 RealSense D435i安装2 Kinova ROS安装 二 手眼标定环境配置1 visip2 aruco ros3 easy handeye 三 标定前准备1 终端python版本设置2 opencv4
  • 相机成像原理详解

    ybwu 64 whu edu cn 被摄景物反射出的光线通过照相镜头 xff08 摄景物镜 xff09 和控制曝光量的快门聚焦后 xff0c 被摄景物在暗箱内的感光材料上形成潜像 xff0c 经冲洗处理 xff08 即显影 定影 xff0
  • python和numpy matplotlib版本匹配,以及安装指定版本库

    python和numpy matplotlib版本匹配 xff0c 以及安装指定版本库 文章目录 python和numpy matplotlib版本匹配 xff0c 以及安装指定版本库一 卸载二 安装三 验证 Matplotlib is a
  • wegame桌面丢失(所有软件都可用)

    1 打开此电脑 2 右上角搜索引擎里输入代码tgp daemon 即可 如果想要放在左面或者添加快捷方式邮寄此软件 会出现 创建快捷方式 或者固定到 开始位置
  • 人脸识别的LOSS(多分类Softamx)

    人脸1 xff1a N应用 xff1a https blog csdn net intflojx article details 81278330 超多分类的Softmax 早期深度人脸识别方法 xff0c 框架为CNN 43 Softma
  • 一些范冰冰的照片

    你可以说她YD xff0c 也可以说她XJ xff0c 但是你不能否认她的美丽 偶就是无敌小超人 xff0c 克塞前来拜访 热门圈子 xff1a 王仁甫 张佑赫 王绍伟 tony 明道 快速评论 共 19 条回复
  • vnc的默认端口修改

    http inthirties com 90 thread 1261 1 1 html vnc的默认端口是5901 xff0c 这个说法是不对的 vnc并不是只有一个端口 以前另一个文章介绍了nvcserver的配置用户的过程 xff0c
  • JavaScript 关于进制之间的转换实现

    JS要实现进制之间的转换 xff0c 可以利用parseInt xff0c toString完成 1 n进制 gt 10进制 xff1a parseInt string radix 2 n进制 gt radix进制 xff1a a toSt
  • VNC Server配置

    VNC登录用户缺省是root xff0c 但在安装oracle时必须用oracle用户的身份登录 xff0c 下面我们就以oracle为例说明如何配置VNC xff0c 从而可以使用不同的用户登录到主机 步骤描述如下 xff1a 步骤一 x
  • 文字检测识别技术的未来发展趋势和面临的选择

    未来发展趋势和面临的挑战 1文本检测与识别技术的未来发展趋势 场景文本检测与识别的研究发展趋势 场景文本检测识别目前来讲大概分为场景文本检测 场景文本识别 以及端到端文本检测和识别三个主要的方向 其中文本检测方法主要是包括基于文本框回归的分
  • [SIGCOMM2016]Robotron: Top-down Network Management at Facebook Scale

    Facebook面临的问题 分布式配置 xff1a 有很多配置需要在不同的系统中更改 多个Domain xff1a Facebook需要管理网络的网络版本控制 xff1a 需要管理不同版本的网络同时运行 依赖 xff1a 将新路由器添加到
  • Adversary Attack(对抗攻击)论文阅读笔记

    引言 最近开始学习Adversary Attack 对抗攻击 有关的内容 xff0c 于是便从Ian GoodFollow的论文开始读起 xff0c 后面每篇博客都会列举三篇的阅读笔记 xff0c 来记录学习的经历 如果有讲得不到位或者您有
  • 海睿思分享 | 浅谈数仓指标体系管理

    什么是指标 xff1f 指标 xff0c 是用于衡量事物发展程度的单位或方法 xff0c 也常被称作度量 xff0c 通常情况下也是报表统计的字段 xff0c 例如 xff1a 人口数 营业收入 用户数 利润率 成功率 失败率 覆盖率等 1
  • PyTorch 实战:计算 Wasserstein 距离

    xff08 给 Python开发者 加星标 xff0c 提升Python技能 xff09 编译 xff1a 机器之心 xff0c 作者 xff1a Daniel Daza 最优传输理论及 Wasserstein 距离是很多读者都希望了解的基
  • Java8 Lambda表达式教程

    1 什么是 表达式 表达式本质上是一个匿名方法 让我们来看下面这个例子 xff1a public int add int x int y return x 43 y 转成 表达式后是这个样子 xff1a int x int y gt x 4
  • VNC连接失败:The connection was refused by the host computer

    解决方法 xff1a 1 用Xshell登陆自己的服务器 2 在命令行中输入vncserver 命令行中出现 xff1a Warning optimal6 2 is taken because of tmp X2 lock Remove t
  • ACM会用到的一点数学知识

    1 费马小定理 xff1a a p mod p 61 a p为素数 xff0c 且a不是p的倍数 2 数n的约数个数 xff1a n分解因数为p1 s1 p2 s2 pm sm 则约数个数为 s1 43 1 s2 43 1 sm 43 1
  • SVN的Status总结

    执行SVN up和svn merge等命令出现在首位置的各字母含义如下 xff1a 无修改 A 新增 C 冲突 D 删除 G 合并 I 忽略 M 改变 R 替换 X 未纳入版本控制 xff0c 但被外部定义所用 未纳入版本控制 该项目已遗失
  • linux 下中文编码转换问题

    目标 xff1a 接收网络传过来的字节序 xff0c 转换字符串 全英文的情况下直接保存string即可 xff0c 带中文的情况试了好久故做如下记录 1 首先确认gcc 应该是utf 8的格式来存储字符串的 通过cmake 加入 fexe