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

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-1.1.tar.gz_linux_linux 字符转换_linux字符集_字符转换_字符集

    `libiconv`是由GNU项目开发的字符转换库,它提供了丰富的API供程序员在C/C++代码中实现字符集转换。`libiconv`支持多种字符集,包括但不限于ASCII、EUC-CN、GB2312、GBK、Big5、ISO-8859系列、Shift_JIS、UTF-8等。...

    iconv字符集转换库

    iconv字符集转换库是计算机编程领域中一个重要的工具,主要用于在不同的字符编码之间进行转换。这个库在处理多语言环境、数据交换以及网络通信时起着至关重要的作用。字符集,也称为字符编码,是一种将字符与数字或...

    libiconv安卓静态库

    libiconv是一个广泛使用的字符集转换工具,它提供了丰富的编码支持,包括但不限于ASCII、UTF-8、GBK、BIG5等。在Android系统中,原本开发者可能依赖于libicuuc.so,这是一个用于国际化和本地化的库,其中的ucnv_...

    libiconv for windows库

    libiconv是一个跨平台的字符集转换库,主要用于处理不同编码之间的转换问题。在Windows环境下,由于系统默认采用的是GBK编码,而许多开源软件或网络数据通常使用UTF-8编码,因此libiconv在Windows上的应用尤为重要。...

    c/c++ 字符集转换

    本文将深入探讨字符集转换的原理,以及如何在C/C++中使用`libiconv`这个静态库进行转换。`libiconv`是GNU项目提供的一种通用的字符集转换工具,它支持多种字符编码,包括ASCII、ISO-8859系列、UTF-8、GB2312、GBK、...

    libiconv1.15 裁剪到200多K的库

    libiconv是GNU项目中的一个字符集转换库,它提供了在不同字符编码之间转换的功能,例如从UTF-8转换到GBK。在原始版本中,libiconv包含了大量的字符集支持,这使得其体积较大,对于内存和存储空间有限的嵌入式设备来...

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

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

    编译 libiconv的动态库

    libiconv是一个开源的字符集转换库,它主要提供了`iconv()`函数,用于实现不同字符集之间的转换。这在处理多语言环境下文本数据的程序中尤其重要。libiconv能够支持广泛的字符集,包括但不限于ASCII、ISO-8859-1、...

    libiconv1.14 mingw编译出来的安装包

    libiconv是一个广泛使用的字符集转换库,它的主要任务是将数据从一种字符编码转换到另一种编码。在这个名为"libiconv1.14 mingw编译出来的安装包"的压缩文件中,包含了libiconv1.14的不同组成部分,包括静态库、动态...

    libiconv -WIN32的源码库

    libiconv是一个广泛使用的字符编码转换库,它为开发者提供了在不同字符集之间进行转换的功能。在Windows平台上,特别是对于使用Visual Studio 2013(VS2013)的开发者来说,libiconv的源码库是至关重要的工具。这个...

    android ndk环境下移植libiconv方法 附源码

    `libiconv`是GNU项目提供的一种字符集转换工具,它支持多种编码格式,如ASCII、UTF-8、GBK等。本文将详细介绍如何在Android NDK环境中移植`libiconv`库,以实现跨平台的字符编码转换功能。 首先,我们来理解一下...

    VC2010编译的libiconv静态库

    libiconv是一个广泛使用的字符集转换库,它提供了一套API,使得开发者能够在不同编码之间进行数据转换。这个库最初是作为GNU项目的一部分开发的,现在已经成为许多操作系统和应用程序的基础组件。在Windows环境下,...

    libiconv 1.14 vs2017工程

    libiconv是一个广泛使用的字符集转换库,它提供了丰富的字符编码转换功能,支持多种操作系统平台,包括Windows。版本1.14是libiconv的一个稳定版本,为开发者提供了在不同编码之间转换的高效解决方案。本文将详细...

    windows下libiconv-1.15的最新编译版本

    libiconv,一个广泛使用的字符编码转换库,由GNU项目开发,旨在提供跨平台的字符集转换功能。在Windows环境下,libiconv-1.15是目前最新的稳定版本,包含了必要的头文件、动态链接库(dll)和静态链接库(lib),...

    windows下利用libiconv将实现utf8和gbk编码之间转换

    libiconv是一个广泛使用的字符编码转换工具,它支持多种编码格式,包括UTF-8和GBK。 UTF-8是一种变长的Unicode编码方式,每个Unicode字符可以被表示为1到4个字节。GBK,全称为“国标汉字扩展A区”,是中国大陆广泛...

    libiconv -1.15 for windows库

    `libiconv`是一款开源的字符集转换库,它提供了在不同字符编码之间转换的功能,广泛应用于跨平台的软件开发中。`libiconv-1.15`是该库的一个稳定版本,适用于Windows操作系统,并且已针对Visual Studio 2010进行了...

    编译好的libiconv.lib和libiconv.dll,含64位及32位

    libiconv是一个广泛使用的字符集转换库,它允许程序在不同的字符编码之间进行转换,如ASCII、UTF-8、GB2312等。在标题和描述中提到的“编译好的libiconv.lib和libiconv.dll”,意味着这些是已经过编译并准备就绪的库...

    Iconv函数进行字符集转换.pdf

    在开发过程中,如果应用程序需要使用Iconv函数进行字符集转换,必须在编译阶段正确链接Iconv库。这通常通过在编译命令中添加`-liconv`来实现,确保编译器可以找到并链接到Iconv库,从而在运行时能够调用相关的函数。...

    libiconv1.16.rar

    libiconv是一个广泛使用的字符集转换库,它提供了丰富的字符编码转换功能,使得不同编码间的文本数据可以顺利互换。libiconv 1.16是这个库的一个稳定版本,特别值得一提的是,它已经为Windows平台进行了编译,兼容...

    libiconv.zip

    libiconv是一个广泛使用的字符集转换库,其在跨平台的软件开发中扮演着至关重要的角色。本压缩包"libiconv.zip"提供了版本为1.16的libiconv库,针对不同的处理器架构进行了优化,包括arm64-v8a、armeabi-v7a、x86和...

Global site tag (gtag.js) - Google Analytics