libiconv字符集转换库使用方法
在软件开发中不可避免的需要用到字符集的转换;转换方法很多如自行编写字符集转换库、利用Windows提供之MultiByteToWideChar函数等;自行编写相对周期较长,而利用MultiByteToWideChar等函数进行转换在跨平台移值时带来很大的不方便;所以在本文里我们将讲述如何利用在Linux与Windows下都可用的libiconv库进行字符集的转换。
我们可以从http://www.gnu.org/software/libiconv/上下载最新版本的libiconv;本文里以libiconv-1.9.2-1.exe为例子说明安装与使用方法;libiconv的安装非常的方便,就和大多数的Windows应用程序安装一样直接Step by Step就可以了;在安装过程中会提示你是否下载源代码,源代码说白了对我们也没有多大的用处所以就不选择下载源代码;安装完之后在libiconv的安装目录下的man/pdf目录中有一个libiconv-man.pdf,这个文件就是libiconv相关函数的说明;所以如果你对libiconv还不是很熟悉的话请看一下这个文件。
为了在VC6中使用libiconv库我们必需对VC6进行相应的设置;从VC6的菜单栏中选择ToolsàOptions..,在弹出的对话框中选择Directories选项卡,在Show directories for下拉框中选择Include files,在最下方的Directories:中添加上libiconv安装目录下的include目录,如下图(图1-1)所示:
图1-1
这样我们就配置了iconv.h文件查找目录;由于libiconv要用到libiconv.lib所以接下来我们应该配置一下libiconv.lib文件的查找目录;在图1-1的Show directories for下接框中选择Library files,在最下方的Directories:列表中添加上libiconv安装目录下的lib目录;OK配置完成点击OK按钮就可以了;为了测试方便我们应该所libiconv安装目录下之bin目录下的libiconv2.dll复制到系统的System32目录下。
转换例子如下:
#include <stdio.h>
#include <string.h>
//包函libiconv库头文件
#include <iconv.h>
//导入libiconv库
#pragma comment(lib,"libiconv.lib")
int ChangeCode( const char* pFromCode,
const char* pToCode,
const char* pInBuf,
size_t* iInLen,
char* pOutBuf,
size_t* iOutLen );
int main( int argc, char* argv[] )
{
char sInBuf[100];
char sOutBuf[100];
size_t iInLen = 0;
size_t iOutLen = 100;
int iRet;
strcpy( sInBuf, "测试Test Source" );
memset( sOutBuf, 0x00, 100 );
iInLen = strlen( sInBuf );
iRet = ChangeCode( "GBK", "UTF-16", sInBuf, &iInLen, sOutBuf, &iOutLen );
return 0;
}
int ChangeCode( const char* pFromCode,
const char* pToCode,
const char* pInBuf,
size_t* iInLen,
char* pOutBuf,
size_t* iOutLen )
{
int iRet;
//打开字符集转换
iconv_t hIconv = iconv_open( pToCode, pFromCode );
if ( -1 == (int)hIconv )
{
return -1;//打开失败,可能不支持的字符集
}
//开始转换
iRet = iconv( hIconv, (const char**)(&pInBuf), iInLen, (char**)(&pOutBuf), iOutLen );
//关闭字符集转换
iconv_close( hIconv );
return iRet;
}
字符集的转换就是这么的简单;当然如果你有兴趣的话在Linux下也去安装一下libiconv然后把上面那段代码放到Linux下用gcc编译一下看看。
libiconv字符集转换库使用方法相关推荐
- libiconv字符集转换库在C#中的使用
<libiconv字符集转换库使用方法>一文中说到了libiconv可以实现不同字符集的转换.比如GBK转BIG5等.在项目中因为需要,找到这个库.可是这个库在C#中没有很好的支持.不过, ...
- 不同字符集倒库的方法
第一步:EXP 原 US7ASCII数据库中的SCOTT用户. 第二步:EXP 原US7ASCII 数据库中的ZHAOBOYI用户. 第三步:CREATE NEW DATABASE(CHARACTER ...
- 【MySQL】故障分析 | MySQL 优化案例 - 字符集转换
1.概述 好文章转载:故障分析 | MySQL 优化案例 - 字符集转换 一.背景 开发联系我,说是开发库上有一张视图查询速度很慢,9000 条数据要查 10s,要求我这边协助排查优化. 二.问题 S ...
- mysql 数据库字符集转换_字符集介绍及mysql数据库编码转换
一.字符集介绍: 1.ASCII ASCII是英文American Standard Code for Information Interchange的缩写,美国标准信息交换代码是由美国国家标准学会( ...
- 汉字编码转换原理及方法
一.基本概念 · GB码 全称是GB2312-80<信息交换用汉字编码字符集 基本集>,1980年发布,是中文信息处理的国家标准,在大陆及海外使用简体中文的地区(如新加坡等)是强制使用的唯 ...
- 使用iconv编程进行字符集转换
使用iconv编程进行字符集转换 摘自:https://www.cnblogs.com/lancidie/archive/2013/04/12/3016965.html Linux上进行编码转换时,既 ...
- linux libcurl 库使用方法
一.ibcurl简介 作为是一个多协议的便于客户端使用的URL传输库,基于C语言,提供C语言的API接口,支持DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, I ...
- 小结两种在Python中导入C语言扩展库的方法
小结两种在Python中导入C语言扩展库的方法 分类: Pythoner2009-08-18 20:44 2563人阅读 评论(1) 收藏 举报 python扩展c语言importstring 一种是 ...
- python字符集_Python任意字符集转换
在python处理文本的过程中,经常会有文本字符集转换的情况, 而我们希望用一个方法,不用关心文本原本的字符集是什么样的,直接转换成想要的任何字符集就可以了. 方法一: import chardet ...
最新文章
- vue中 静态文件引用注意事项
- sap linux下配置文件,Linux下配置sapjco3
- 贴牌是赢在当下,创牌才会更有未来
- leetcode练习——栈(1)
- Serverless 服务选型
- 514 - Rails
- Apache服务器的下载与安装
- 学习笔记之dns正反向解析区域,主从服务,子域授权,安全
- ios ffmpeg h264 decode
- 如何格式化搭载 Apple 芯片的 Mac?
- ssm教师教学评价系统(ssm教学评价系统教师ssm学生评教系统)JSP网上评教系统jsp评教系统
- 【武忠祥高等数学基础课笔记】第一章 函数、极限、连续
- idea打包jar运行时出现——jar中没有主清单属性(Invalid or corrupt jarfile)
- 微信小程序实现押金管理(支付押金、申请退还押金、押金明细)
- 分享一款好用的ssh工具
- 2021.1.22平安科技面经--算法工程师实习生
- IoC容器Autofac
- QT FTP上传文件
- win7声卡驱动不能安装(安装失败)完美解决方案
- Win10预览版常用快捷键
热门文章
- Android_L(64bit) 模拟器配置及创建项目
- Zabbix监控和分布式部署实施方案
- 城市风云儿的装备体系
- .NET处理异常--zt
- mysql处理varchar类型的between和and的时间问题少一天解决;
- 解决vscode打开空白的问题
- Handshake failed due to invalid Upgrade header: null 解决方案
- Python入门到精通三天速成第一讲——创建自定义类
- 【采访】腾讯社交广告高校算法大赛 决赛第一周周冠军——ThreeIdiots比赛经验及心得分享 腾讯广告算法大赛
- SOTA太难了?试试Dropout