libiconv字符集转换库使用方法

系统 2012 0

在软件开发中不可避免的需要用到字符集的转换;转换方法很多如自行编写字符集转换库、利用 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字符集转换库使用方法


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论