一、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...