在軟件開發中不可避免的需要用到字符集的轉換;轉換方法很多如自行編寫字符集轉換庫、利用
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
編譯一下看看。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
