`
guoyiqi
  • 浏览: 964940 次
社区版块
存档分类
最新评论

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编译一下看看。

分享到:
评论

相关推荐

    c/c++ 字符集转换

    c/c++ 字符集转换[静态库,实例解析],libiconv

    windows下字符集转换基于libiconv-1.14 VS2010编译

    是一个开源的字符编码转换库,实现utf-8,gb2312等各种常见的编码转换,解决乱码问题,使用VS2010编译,配置-&gt;C/C++-&gt;代码生成-&gt;运行库使用的是(/MDd) 可以直接使用,也可以根据需要自行配置 #include "iconv.h" #...

    libiconv-1.1.tar.gz_linux_linux 字符转换_linux字符集_字符转换_字符集

    字符集转换程序

    Linux字符集编码转换.docx

    iconv(http://www.gnu.org/software/libiconv/)是一个开源的字符编码转换库,可以“方便”的完成几乎所有的编码转换工作。

    libiconv-1.13.1.tar.gz

    libiconv-1.13.1.tar.gz 各种字符集编码转换 libiconv-1.13.1.tar.gz 各种字符集编码转换 libiconv-1.13.1.tar.gz 各种字符集编码转换 libiconv-1.13.1.tar.gz 各种字符集编码转换 libiconv-1.13.1.tar.gz 各种字符...

    编码转换支持库2.0#0版

    易语言iconv.fne支持库中文名为易语言编码转换支持库,本易语言支持库在转换编码时使用 GNU libiconv 1.9.1版,支持现有绝大多数编码和字符集。易语言iconv.fne支持库为一般支持库,需要易系统3.7版本的支持,需要...

    libiconv-1.11.1.tar.gz

    字符集转换源代码。按照下面的方法可以在Windows下编译。 iconv基于GPL公开源代码,是GNU项目的一部分,在各种Unix-like操作系统下很容易编译和使用,而在Windows下编译iconv就没那么简单了。 最新版的iconv(目前...

    编码转换支持库2.0#0版(静态版)

    易语言iconv_static.lib支持库中文名为易语言编码转换支持库,本易语言支持库在转换编码时使用 GNU libiconv 1.9.1版,支持现有绝大多数编码和字符集。易语言iconv_static.lib支持库为易语言静态支持库,需要易语言...

    window下的iconv库libiconv-2.dll

    window下的iconv库libiconv-2.dll,用户与字符集转换,utf-8转gkb,gbk转utf-8

    libiconv.zip

    iconv命令可以将一种已知的字符集文件转换成另一种已知的字符集文件。 它的作用是在多种国际编码格式之间进行文本内码的转换。

    libconv-1.17

    随着互联网时代的到来,通过互联网进行文字交流也逐渐增多:浏览外国的网站,这个时候字符编码的转换变得尤为重要。这带来了一个问题,就是许多字符在某一种编码...GNU的libiconv就是为这两种应用设计的编码转换库。

    编码转换支持库2.0版(iconv.fne)-易语言

    本支持库在转换编码时使用 GNU libiconv 1.9.1版,支持现有绝大多数编码和字符集。 操作系统支持: Windows、Linux

    易语言-编码转换支持库2.0#0版(静态版)

    易语言iconv_static.lib支持库中文名为易语言编码转换支持库,本易语言支持库在转换编码时使用 GNU libiconv 1.9.1版,支持现有绝大多数编码和字符集。 易语言iconv_static.lib支持库为易语言静态支持库,需要易语言...

    php中iconv函数使用方法

    iconv函数库能够完成各种字符集间的转换,是php编程中不可缺少的基础函数库。 1、下载libiconv函数库http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.2.tar.gz; 2、解压缩tar -zxvf libiconv-1.9.2.tar.gz; 3...

    易语言-编码转换支持库2.0#0版

    易语言iconv.fne支持库中文名为易语言编码转换支持库,本易语言支持库在转换编码时使用 GNU libiconv 1.9.1版,支持现有绝大多数编码和字符集。 易语言iconv.fne支持库为一般支持库,需要易系统3.7版本的支持,需要...

    zxing 在 windows 下的编译包

    通过设置NO_ICONV,可以不需要libiconv,但是扫描结果也没有转换,需要调用方自己做字符集转换。 经过这些,应该可以编译了。 编译它的示例: 这要求有ImageMagick,直接下载一个安装, 安装完成后,新建一个...

Global site tag (gtag.js) - Google Analytics