linux下iconv()函数的用法

导数 shell脚本无法对变量重赋值吗 impala-shell -i 172.16.220.102:21000 -l -u hadoop --ldap_password_cmd='echo -n ld_asdkjaKC3hUaf2fm' --auth_creds_ok_in_clear -f jingying_rundata1.sql --delimited --print_header --output_delimiter "," -o jingying_rundata1.csv 执行过程有显示结果行数( 阅读详情

转载自:http://blog.youkuaiyun.com/jnbbwyth/article/details/6991371


linux shell 配置文件中默认的字符集编码为UTF-8 。UTF-8是unicode的一种表达方式,gb2312是和unicode都是字符的编码方式,所以说gb2312跟utf-8的概念应该不是一个层次上的。在LINUX上进行编码转换时,可以利用iconv命令实现,这是针对文件的,即将指定文件从一种编码转换为另一种编码。
       查了下iconv命令用法如下:
iconv [选项...] [文件...]

有如下选项可用:

输入/输出格式规范:
-f, --from-code=名称 原始文本编码
-t, --to-code=名称 输出编码

信息:
-l, --list 列举所有已知的字符集

输出控制:
-c 从输出中忽略无效的字符
-o, --output=FILE 输出文件
-s, --silent 关闭警告
--verbose 打印进度信息

所以,我在程序的末尾直接加了一句
iconv -f utf-8 -t gb2312 /server_test/reports/software_.txt > /server_test/reports/software_asserts.txt
解决了问题。

在网上查了些资料还知道在LINUX上进行编码转换时,还可以利用iconv函数族编程实现。

iconv函数族的头文件是iconv.h,使用前需包含之。
#include <iconv.h>
iconv函数族有三个函数,原型如下:
(1) iconv_t iconv_open(const char *tocode, const char *fromcode);
此函数说明将要进行哪两种编码的转换,tocode是目标编码,fromcode是原编码,该函数返回一个转换句柄,供以下两个函数使用。
(2) size_t iconv(iconv_t cd,char **inbuf,size_t *inbytesleft,char **outbuf,size_t *outbytesleft);
此函数从inbuf中读取字符,转换后输出到outbuf中,inbytesleft用以记录还未转换的字符数,outbytesleft用以记录输出缓冲的剩余空间。 (3) int iconv_close(iconv_t cd);
此函数用于关闭转换句柄,释放资源。
例子1: 用C语言实现的转换示例程序

/* f.c : 代码转换示例C程序 */
#include <iconv.h>
#define OUTLEN 255
main()
{
char *in_utf8 = "姝e?ㄥ??瑁?";
char *in_gb2312 = "正在安装";
char out[OUTLEN];

//unicode码转为gb2312码
rc = u2g(in_utf8,strlen(in_utf8),out,OUTLEN);
printf("unicode-->gb2312 out=%sn",out);
//gb2312码转为unicode码
rc = g2u(in_gb2312,strlen(in_gb2312),out,OUTLEN);
printf("gb2312-->unicode out=%sn",out);
}
//代码转换:从一种编码转为另一种编码
int code_convert(char *from_charset,char *to_charset,char *inbuf,int inlen,char *outbuf,int outlen)
{
iconv_t cd;
int rc;
char **pin = &inbuf;
char **pout = &outbuf;

cd = iconv_open(to_charset,from_charset);
if (cd==0) return -1;
memset(outbuf,0,outlen);
if (iconv(cd,pin,&inlen,pout,&outlen)==-1) return -1;
iconv_close(cd);
return 0;
}
//UNICODE码转为GB2312码
int u2g(char *inbuf,int inlen,char *outbuf,int outlen)
{
return code_convert("utf-8","gb2312",inbuf,inlen,outbuf,outlen);
}
//GB2312码转为UNICODE码
int g2u(char *inbuf,size_t inlen,char *outbuf,size_t outlen)
{
return code_convert("gb2312","utf-8",inbuf,inlen,outbuf,outlen);
}

例子2: 用C++语言实现的转换示例程序

/* f.cpp : 代码转换示例C++程序 */
#include <iconv.h>
#include <iostream>

#define OUTLEN 255

using namespace std;

// 代码转换操作类
class CodeConverter {
private:
iconv_t cd;
public:
// 构造
CodeConverter(const char *from_charset,const char *to_charset) {
cd = iconv_open(to_charset,from_charset);
}

// 析构
~CodeConverter() {
iconv_close(cd);
}

// 转换输出
int convert(char *inbuf,int inlen,char *outbuf,int outlen) {
char **pin = &inbuf;
char **pout = &outbuf;

memset(outbuf,0,outlen);
return iconv(cd,pin,(size_t *)&inlen,pout,(size_t *)&outlen);
}
};

int main(int argc, char **argv)
{
char *in_utf8 = "姝e?ㄥ??瑁?";
char *in_gb2312 = "正在安装";
char out[OUTLEN];

// utf-8-->gb2312
CodeConverter cc = CodeConverter("utf-8","gb2312");
cc.convert(in_utf8,strlen(in_utf8),out,OUTLEN);
cout << "utf-8-->gb2312 in=" << in_utf8 << ",out=" << out << endl;

// gb2312-->utf-8
CodeConverter cc2 = CodeConverter("gb2312","utf-8");
cc2.convert(in_gb2312,strlen(in_gb2312),out,OUTLEN);
cout << "gb2312-->utf-8 in=" << in_gb2312 << ",out=" << out << endl;
}


UCIe协议里的“摸鱼”信号:NOP Flit和DLLP到底在忙啥? 本文深入解析了UCIe协议中的NOP信号机制,探讨了NOP Flit和DLLP在芯片间通信中的关键作用。这些看似无用的信号实际上是维持链路健康、确保数据完整性和同步的核心要素,尤其在Chiplet互联场景中表现突出。文章还揭示了工程实践中常见的NOP处理误区及其优化方案。 阅读详情

相关推荐

iconv()函数的用法

iconv()函数的用法,字符编码间的转换

Linux命令之iconv命令

日常工作中我们需要将windows生成的文件上传到Linux系统,有时候会因为编码问题出现显示乱码。例如我上传了一个csv文件到Linux服务器上,默认编码为GB2312,在Linux打开则会出现乱码,我们需要将文件进行便秘吗转换。iconv命令对于给定文件把它的内容从一种编码转换成另一种编码。 ...

月生的静心苑 2万+

ESP32连接OneNet云平台实现多设备联动控制完整示例

通过esp32连接onenet云平台,实现远程设备间的智能联动控制,利用MQTT协议完成数据通信,esp32连接onenet云平台后可高效稳定地上传与下发指令,提升物联网系统响应速度与自动化水平。

weixin_42360733的博客 547

iconv字符编码转换全攻略(转)

4、代码页(codepage),Unicode是一个世界统一的标准,也就是说,如果一个文本是用Unicode方式编码的,那么它可以同时显示中文、日文、阿拉伯文等等,并且是在任何系统上都可以正常显示的。UTF-7,UTF-8,UTF-16都是比较常见的编码方式。比如gb2312-->unicode的转化就是GBK(或者是gb18030 cp936,我们之前说过,大多数情况这些是等价的)到ucs-2(或者是utf-16,如果文本信息中没有BOM就要特别指定utf-16le或是utf-16be)的转化。

mudh118的博客 9720

【VMware篇】7-通过ISO镜像升级VMware Esxi

本文主要介绍Dell服务器上安装的ESXi升级的方法之一(采用ISO升级)。

chen_yunan的博客 5515

线性回归LinearRegression

对视频中线性回归算法的相关内容进行总结与记录 文章目录一、理论基础二、实例2.1 一元线性回归2.1.1 推导过程2.1.2 代码实现(基于numpy)2.1.3 代码实现(基于sklearn)2.2 多元线性回归2.2.1 代码实现(基于numpy)2.2.2 代码实现(基于sklearn) 一、理论基础 回归 通常是指利用某个函数,尽可能把数据样本点“串”在一起,用于描述输入变量和输出变量间的变化关系 线性回归 特点:用来把数据“串”起来的那个函数是线性的 (一元线性回归(一个自变量) &a.

邱邱邱的博客 1068

linux iconv函数失败,linux下iconv()函数的用法(转载并修改)

linux shell 配置文件中默认的字符集编码为UTF-8 。UTF-8是unicode的一种表达方式,gb2312是和unicode都是字符的编码方式,所以说gb2312跟utf-8的概念应该不是一个层次上的。在LINUX上进行编码转换时,可以利用iconv命令实现,这是针对文件的,即将指定文件从一种编码转换为另一种编码。查了下iconv命令用法如下:iconv [选项...] [文件......

weixin_28987735的博客 1156

[QMT量化交易小白入门]-十二、QMT回测龙头打首板和连板的策略

class a():passA = a() #创建空的类的实例 用来保存委托状态field_list定义了需要的市场数据字段,而类a用于保存交易状态。

木头大左的博客 4759

Linux学习之道:linux下iconv()函数的用法

linux shell 配置文件中默认的字符集编码为UTF-8 。UTF-8是unicode的一种表达方式,gb2312是和unicode都是字符的编码方式,所以说gb2312跟utf-8的概念应该不是一个层次上的。在LINUX上进行编码转换时,可以利用iconv命令实现,这是针对文件的,即将指定文件从一种编码转换为另一种编码。        查了下iconv命令用法如下: iconv [选项

Java小迷的专栏 1086

基于MATLAB的鲁棒主成分分析(Robust PCA)图像去噪

鲁棒主成分分析(Robust PCA)是一种有效的图像去噪方法,它能够在保持图像细节的同时去除噪声。本文将介绍如何使用MATLAB实现基于鲁棒PCA的图像去噪,并提供相应的源代码。它假设噪声是随机的、高斯分布的,并将图像分解为一个低秩矩阵和一个稀疏矩阵的和。低秩矩阵表示图像的结构和纹理信息,稀疏矩阵表示图像中的噪声和细节信息。接下来,我们将图像矩阵减去均值,得到规范化的图像矩阵。然后,我们将灰度图像转换为矩阵形式,并计算图像的均值。通过分离出低秩矩阵和稀疏矩阵,我们就得到了去噪后的图像和残差图像。

DevRevolt的博客 1125

云原生之容器编排实践-在K8S集群中使用Registry2搭建私有镜像仓库

基于前面搭建的3节点 Kubernetes 集群,今天我们使用 Registry2 搭建私有镜像仓库,这在镜像安全性以及离线环境下运维等方面具有重要意义。作为测试环境,本次使用 Registry2 搭建了私有镜像仓库,实际生产环境建议使用 Harbor;创建了一个 local-storage 的 StorageClass ,并使用本地磁盘的方式创建使用 PV ,实际建议使用 NFS 。

Heartsuit的博客 2462

linux下iconv()函数的用法此函数可以用来字符编码间的转换

/*以下内容出自http://apps.hi.baidu.com/share/detail/20232260,好文章仅供分享*/  linux shell 配置文件中默认的字符集编码为UTF-8 。UTF-8是unicode的一种表达方式,gb2312是和unicode都是字符的编码方式,所以说gb2312跟utf-8的概念应该不是一个层次上的。在LINUX上进行编码转换时,可以利用iconv命

Eliyah_的专栏 636

Vue3 - Element Plus 树形表格组件 el-table 一键全部展开折叠功能,支持动态数据及懒加载点击父级才去请求的场景,Tree树状表格每行带有children的表格全部收起和折叠!

vue3,element-plus,表格Table组件,el-table,怎样一键展开/收起,一键展开或折叠树形表格,如何通过按钮来实现全部展开,不生效,一键折叠或展开表格,表格children嵌套,带有子集,多级表格,懒加载,动态数据,table表格的children通过后端请求过来的怎么一键展开请求数据呢,表格如何一键展开和折叠,怎么使用,教程,树形数据table全部展开和折叠,一键展开或折叠树形表格,点击展开接口获取数据,toggleRowExpansion,树形表格懒加载与全部折叠,深层多级,复杂,

🏆 前端领域优质创作者 6803

linux下iconv()函数的用法(转载并修改)

linux shell 配置文件中默认的字符集编码为UTF-8 。UTF-8是unicode的一种表达方式,gb2312是和unicode都是字符的编码方式,所以说gb2312跟utf-8的概念应该不是一个层次上的。在LINUX上进行编码转换时,可以利用iconv命令实现,这是针对文件的,即将指定文件从一种编码转换为另一种编码。 查了下iconv命令用法如下:iconv [选项...]...

weixin_30888707的博客 101

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

linux中iconv函数,Linux下编码转换(iconv函数族)

转自:http://www.linuxdiyf.com/viewarticle.php?id=45164在Linux上进行编码转换时,既可以利用iconv函数族编程实现,也可以利用iconv命令来实现(针对文件进行转换)一、利用iconv函数族进行编码转换iconv函数族的头文件是iconv.h使用前需包含之:#include iconv函数族有三个函数,原型如下:(1) iconv_open()...

weixin_42151373的博客 1304

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

iconv命令与函数

iconv在LINUX命令的应用与iconv函数的使用 1.iconv - 字符集转换 man手册中iconv命令用法如下: 总览: iconv [-f encoding] [-t encoding] [inputfile] 描述: iconv程序把文本从一种编码格式转换为另一种编码格式,比如它可以将UTF8编码的转换成GB18030的编码,反过来也行。 输入/输出格式规范: -f, --from-code=名称 原始文本编码 -t, --to-code=名称 输出编码 信息: -l, --list 列举所

wydwja的博客 2703

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Linux下编码转换(iconv函数族)

转自:http://www.linuxdiyf.com/viewarticle.php?id=45164 在Linux上进行编码转换时,既可以利用iconv函数族编程实现,也可以利用iconv命令来实现(针对文件进行转换)  一、利用iconv函数族进行编码转换  iconv函数族的头文件是iconv.h 使用前需包含之:#include iconv函数族有三个函数,原型如下: (1

白永辉的专栏 1万+

iconv函数

转载自百度文库 头文件"iconv.h"。iconv命令可以将一种已知的字符集文件转换成另一种已知的字符集文件。 它的作用是在多种国际编码格式之间进行文本内码的转换。 linux下的函数原型 size_t iconv(iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesl

ostar_liang的专栏 3351

Linux下的编码转换iconv

iconv是linux下的编码转换的工具,它提供命令行和函数接口两种支持方式。 一. 命令行 Linux下的iconv命令可以实现文件编码方式的转换,可以输入iconv --help命令查看。 iconv用法如下: iconv [选项…] [文件…] 选项有以下几种,可以结合使用。下面是通过help命令查看的部分使用信息: 输入/输出格式规范: -f, --from-code=名称 原始文本编码 -t, --to-code=名称 输出编码 信息: -l, --list

weixin_46557247的博客 1825
上一篇: Linux ./configure --prefix命令
下一篇: gcc 的 -g 和 -ggdb 选项
RunBoying
博客等级 码龄17年 41粉丝 117原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值