在软件开发中不可避免的需要用到字符集的转换;转换方法很多如自行编写字符集转换库、利用
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`是由GNU项目开发的字符转换库,它提供了丰富的API供程序员在C/C++代码中实现字符集转换。`libiconv`支持多种字符集,包括但不限于ASCII、EUC-CN、GB2312、GBK、Big5、ISO-8859系列、Shift_JIS、UTF-8等。...
iconv字符集转换库是计算机编程领域中一个重要的工具,主要用于在不同的字符编码之间进行转换。这个库在处理多语言环境、数据交换以及网络通信时起着至关重要的作用。字符集,也称为字符编码,是一种将字符与数字或...
libiconv是一个广泛使用的字符集转换工具,它提供了丰富的编码支持,包括但不限于ASCII、UTF-8、GBK、BIG5等。在Android系统中,原本开发者可能依赖于libicuuc.so,这是一个用于国际化和本地化的库,其中的ucnv_...
libiconv是一个跨平台的字符集转换库,主要用于处理不同编码之间的转换问题。在Windows环境下,由于系统默认采用的是GBK编码,而许多开源软件或网络数据通常使用UTF-8编码,因此libiconv在Windows上的应用尤为重要。...
本文将深入探讨字符集转换的原理,以及如何在C/C++中使用`libiconv`这个静态库进行转换。`libiconv`是GNU项目提供的一种通用的字符集转换工具,它支持多种字符编码,包括ASCII、ISO-8859系列、UTF-8、GB2312、GBK、...
libiconv是GNU项目中的一个字符集转换库,它提供了在不同字符编码之间转换的功能,例如从UTF-8转换到GBK。在原始版本中,libiconv包含了大量的字符集支持,这使得其体积较大,对于内存和存储空间有限的嵌入式设备来...
是一个开源的字符编码转换库,实现utf-8,gb2312等各种常见的编码转换,解决乱码问题,使用VS2010编译,配置->C/C++->代码生成->运行库使用的是(/MDd) 可以直接使用,也可以根据需要自行配置 #include "iconv.h" #...
libiconv是一个开源的字符集转换库,它主要提供了`iconv()`函数,用于实现不同字符集之间的转换。这在处理多语言环境下文本数据的程序中尤其重要。libiconv能够支持广泛的字符集,包括但不限于ASCII、ISO-8859-1、...
libiconv是一个广泛使用的字符集转换库,它的主要任务是将数据从一种字符编码转换到另一种编码。在这个名为"libiconv1.14 mingw编译出来的安装包"的压缩文件中,包含了libiconv1.14的不同组成部分,包括静态库、动态...
libiconv是一个广泛使用的字符编码转换库,它为开发者提供了在不同字符集之间进行转换的功能。在Windows平台上,特别是对于使用Visual Studio 2013(VS2013)的开发者来说,libiconv的源码库是至关重要的工具。这个...
`libiconv`是GNU项目提供的一种字符集转换工具,它支持多种编码格式,如ASCII、UTF-8、GBK等。本文将详细介绍如何在Android NDK环境中移植`libiconv`库,以实现跨平台的字符编码转换功能。 首先,我们来理解一下...
libiconv是一个广泛使用的字符集转换库,它提供了一套API,使得开发者能够在不同编码之间进行数据转换。这个库最初是作为GNU项目的一部分开发的,现在已经成为许多操作系统和应用程序的基础组件。在Windows环境下,...
libiconv是一个广泛使用的字符集转换库,它提供了丰富的字符编码转换功能,支持多种操作系统平台,包括Windows。版本1.14是libiconv的一个稳定版本,为开发者提供了在不同编码之间转换的高效解决方案。本文将详细...
libiconv,一个广泛使用的字符编码转换库,由GNU项目开发,旨在提供跨平台的字符集转换功能。在Windows环境下,libiconv-1.15是目前最新的稳定版本,包含了必要的头文件、动态链接库(dll)和静态链接库(lib),...
libiconv是一个广泛使用的字符编码转换工具,它支持多种编码格式,包括UTF-8和GBK。 UTF-8是一种变长的Unicode编码方式,每个Unicode字符可以被表示为1到4个字节。GBK,全称为“国标汉字扩展A区”,是中国大陆广泛...
`libiconv`是一款开源的字符集转换库,它提供了在不同字符编码之间转换的功能,广泛应用于跨平台的软件开发中。`libiconv-1.15`是该库的一个稳定版本,适用于Windows操作系统,并且已针对Visual Studio 2010进行了...
libiconv是一个广泛使用的字符集转换库,它允许程序在不同的字符编码之间进行转换,如ASCII、UTF-8、GB2312等。在标题和描述中提到的“编译好的libiconv.lib和libiconv.dll”,意味着这些是已经过编译并准备就绪的库...
在开发过程中,如果应用程序需要使用Iconv函数进行字符集转换,必须在编译阶段正确链接Iconv库。这通常通过在编译命令中添加`-liconv`来实现,确保编译器可以找到并链接到Iconv库,从而在运行时能够调用相关的函数。...
libiconv是一个广泛使用的字符集转换库,它提供了丰富的字符编码转换功能,使得不同编码间的文本数据可以顺利互换。libiconv 1.16是这个库的一个稳定版本,特别值得一提的是,它已经为Windows平台进行了编译,兼容...
libiconv是一个广泛使用的字符集转换库,其在跨平台的软件开发中扮演着至关重要的角色。本压缩包"libiconv.zip"提供了版本为1.16的libiconv库,针对不同的处理器架构进行了优化,包括arm64-v8a、armeabi-v7a、x86和...