设为首页 加入收藏

TOP

libiconv字符集转换库使用方法
2014-11-23 17:50:31 】 浏览:333
Tags: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目录。


这样我们就配置了 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
#include
//包函 libiconv库头文件
#include
//导入 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编译一下看看。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Android之zip文件加密解压及进度.. 下一篇libiconv字符集转换库在C#中的使用

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目