iconv編碼轉換模組移植到ARM

2021-08-04 09:01:52 字數 1998 閱讀 9400

一、iconv交叉編譯

這個網上說明很多,再次不做過多說明

./configure -prefix=/home/xnet/arm-libiconv-1.15-2017-7-26  cc=arm-linux-gcc   -host=arm-linux  -enable-shared   -enable-static

make

make install

編譯出動態庫preloadable_libiconv.so

二、   移植說明

(1)   將資料夾中的動態庫移植到arm-linux中的/usr/local/lib資料夾中

(2)   在/etc/profile中將此動態庫加入環境變數

export ld_preload=/usr/local/lib/preloadable_libiconv.so

(3)   輸入命令,使環境變數立即生效

source /etc/profile

至此,移植完畢,程式中,可使用iconv相關函式進行編碼轉換

三、   iconv模組說明

*iconv標頭檔案

#include

*函式名:code_convert

*函式作用:將輸入緩衝區中的字串,按照指定編碼進行轉換,寫入輸出緩衝區。

*引數:

from_charset:原始編碼格式

to_charset:目標編碼格式

inbuf:輸入緩衝區,儲存待轉換字串

inlen:輸入字串長度

outbuf:輸出緩衝區,儲存轉換完畢的字串

outlen:輸出緩衝區長度

intcode_convert(char *from_charset,char *to_charset,char *inbuf,int inlen,char*outbuf,int outlen)

iconv_t cd;

int rc;

char **pin=&inbuf;

char **pout=&outbuf;

cd=iconv_open(to_charset,from_charset);

if (cd == (iconv_t)-1)

perror("iconv_open");

return -1;

printf("inbuf=%s\n",inbuf);

memset(outbuf,0,outlen);

if(iconv(cd,pin,&inlen,pout,&outlen)==-1)

return -2;

//printf("outbuf=%s\n",outbuf);

iconv_close(cd);

return 0;

*函式名:u2g

*函式作用:utf-8編碼字串轉為gb2312編碼字串

*引數:

inbuf:輸入緩衝區,儲存待轉換字串

inlen:輸入字串長度

outbuf:輸出緩衝區,儲存轉換完畢的字串

outlen:輸出緩衝區長度

intu2g(char *inbuf,size_t inlen,char *outbuf,size_t outlen)

returncode_convert("utf-8","gb2312",inbuf,inlen,outbuf,outlen);

*函式名:g2u

*函式作用:gb2312編碼字串轉為utf-8編碼字串

*引數:

inbuf:輸入緩衝區,儲存待轉換字串

inlen:輸入字串長度

outbuf:輸出緩衝區,儲存轉換完畢的字串

outlen:輸出緩衝區長度

intg2u(char *inbuf,size_t inlen,char *outbuf,size_t outlen)

returncode_convert("gb2312","utf-8",inbuf,inlen,outbuf,outlen);

iconv 檔案編碼轉換

linux shell 配置檔案中預設的字符集編碼為utf 8 utf 8是unicode的一種表達方式,gb2312是和unicode都是字元的編碼方式,所以說gb2312跟utf 8的概念應該不是乙個層次上的。在linux上進行編碼轉換時,可以利用iconv命令實現,這是針對檔案的,即將指定檔案...

iconv 檔案編碼轉換

linux shell 配置檔案中預設的字符集編碼為utf 8 utf 8是unicode的一種表達方式,gb2312是和unicode都是字元的編碼方式,所以說gb2312跟utf 8的概念應該不是乙個層次上的。在linux上進行編碼轉換時,可以利用iconv命令實現,這是針對檔案的,即將指定檔案...

iconv用法,編碼轉換(一)

2010 11 24 17 18 58 分類 linux 標籤 字型大小 大中小訂閱 iconv t iconv open const char tocode,const char fromcode size t iconv iconv t cd,char inbuf,size t inbytesl...