在对HTML页面进行爬取时,总会遇到一些不同的编码,而我们通常都不会一一对这些编码进行处理,而是集体转换成相同的编码,也易于装入数据库。此时,iconv便成为一个很方便的工具。

iconv

头文件"iconv.h"。iconv命令可以将一种已知的字符集文件转换成另一种已知的字符集文件。
它的作用是在多种国际编码格式之间进行文本内码的转换。
linux下的函数原型
size_t iconv(iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft);
iconv是一个计算机程序以及一套应用程序编程接口的名称。
作为应用程序的iconv采用命令行界面,允许将某种特定编码的文件转换为另一种编码。
iconv基于GPL公开源代码,是GNU项目的一部分。在各种UNIX操作系统下均可使用,而在Windows系统,需要特殊的环境如cygwin或者GnuWin32等软件平台下方可使用。现在在SourceForge上也有运行于Windows系统的,需要同时安装gettext程序。
目前版本为2.3.26,支持的内码包括:Unicode相关编码,如UTF-8、UTF-16等等,各国采用的ANSI编码,其中包括GB2312、BIG5等中文编码方式。 主要内容 作为编程接口的iconv包括3个函数:
iconv_open函数用于初始化用于转换的内部缓冲区,指明需要从何种编码方式转换到哪一种。
iconv函数进行实际的转换,需要给出两个间接缓冲区指针和剩余字节数指针。该函数需要更新所有相关信息,因此将不可改写的指针传递给iconv是错误的。
iconv_close函数释放iconv_open函数的缓冲区。 Linux
iconv命令是用来转换文件的编码方式,比如可以将UTF8编码的转换成GB18030的编码,反过来也行。JDK中也提供了类似的工具native2ascii。Linux下的iconv开发库包括iconv_open,iconv_close,iconv等C函数,可以用来在C/C++程序中很方便的转换字符编码,这在抓取网页的程序中很有用处,而iconv命令在调试此类程序时用得着。 用法: iconv[选项...][文件...] 选项: 输入/输出格式规范:
-f,--from-code=NAME始文本编码-t,--to-code=NAME输出编码
信息:
-l,--list列举所有已知的字符集
输出控制:
-c从输出中忽略无效的字符-o,--output=FILE输出文件-s,--silentsuppresswarnings--verbose打印进度信息-?,--help给出该系统求助列表--usage给出简要的用法信息-V,--version打印程序版本号示例:
列出支持的字符编码[1]
[root@new55~]#iconv-lThefollowinglistcontainallthecodedcharactersetsknown.ThisdoesnotnecessarilymeanthatallcombinationsofthesenamescanbeusedfortheFROMandTOcommandlineparameters.Onecodedcharactersetcanbelistedwithseveraldifferentnames(aliases).所有已知字符集
437,500,500V1,850,851,852,855,856,857,860,861,862,863,864,865,866,866NAV,869,874,904,1026,1046,1047,8859_1,8859_2,8859_3,8859_4,8859_5,8859_6,8859_7,8859_8,8859_9,10646-1:1993,10646-1:1993/UCS4,ANSI_X3.4-1968,ANSI_X3.4-1986,ANSI_X3.4,ANSI_X3.110-1983,ANSI_X3.110,ARABIC,ARABIC7,ARMSCII-8,ASCII,ASMO-708,ASMO_449,BALTIC,BIG-5,BIG-FIVE,BIG5-HKSCS,BIG5,BIG5HKSCS,BIGFIVE,BS_4730,CA,CN-BIG5,CN-GB,CN,CP-AR,CP-GR,CP-HU,CP037,CP038,CP273,CP274,CP275,CP278,CP280,CP281,CP282,CP284,CP285,CP290,CP297,CP367,CP420,CP423,CP424,CP437,CP500,CP737,CP775,CP813,CP819,CP850,CP851,CP852,CP855,CP856,CP857,CP860,CP861,CP862,CP863,CP864,CP865,CP866,CP866NAV,CP868,CP869,CP870,CP871,CP874,CP875,CP880,CP891,CP903,CP904,CP905,CP912,CP915,CP916,CP918,CP920,CP922,CP930,CP932,CP933,CP935,CP936,CP937,CP939,CP949,CP950,CP1004,CP1026,CP1046,CP1047,CP1070,CP1079,CP1081,CP1084,CP1089,CP1124,CP1125,CP1129,CP1132,CP1133,CP1160,CP1161,CP1162,CP1163,CP1164,CP1250,CP1251,CP1252,CP1253,CP1254,CP1255,CP1256,CP1257,CP1258,CP1361,CP10007,CPIBM861,CSA7-1,CSA7-2,CSASCII,CSA_T500-1983,CSA_T500,CSA_Z243.4-1985-1,CSA_Z243.4-1985-2,CSA_Z243.419851,CSA_Z243.419852,CSDECMCS,CSEBCDICATDE,CSEBCDICATDEA,CSEBCDICCAFR,CSEBCDICDKNO,CSEBCDICDKNOA,CSEBCDICES,CSEBCDICESA,CSEBCDICESS,CSEBCDICFISE,CSEBCDICFISEA,CSEBCDICFR,CSEBCDICIT,CSEBCDICPT,CSEBCDICUK,CSEBCDICUS,CSEUCKR,CSEUCPKDFMTJAPANESE,CSGB2312,CSHPROMAN8,CSIBM037,CSIBM038,CSIBM273,CSIBM274,CSIBM275,CSIBM277,CSIBM278,CSIBM280,CSIBM281,CSIBM284,CSIBM285,CSIBM290,CSIBM297,CSIBM420,CSIBM423,CSIBM424,CSIBM500,CSIBM851,CSIBM855,CSIBM856,CSIBM857,CSIBM860,CSIBM863,CSIBM864,CSIBM865,CSIBM866,CSIBM868,CSIBM869,CSIBM870,CSIBM871,CSIBM880,CSIBM891,CSIBM903,CSIBM904,CSIBM905,CSIBM918,CSIBM922,CSIBM930,CSIBM932,CSIBM933,CSIBM935,CSIBM937,CSIBM939,CSIBM943,CSIBM1026,CSIBM1124,CSIBM1129,CSIBM1132,CSIBM1133,CSIBM1160,CSIBM1161,CSIBM1163,CSIBM1164,CSIBM11621162,CSISO4UNITEDKINGDOM,CSISO10SWEDISH,CSISO11SWEDISHFORNAMES,CSISO14JISC6220RO,CSISO15ITALIAN,CSISO16PORTUGESE,CSISO17SPANISH,CSISO18GREEK7OLD,CSISO19LATINGREEK,CSISO21GERMAN,CSISO25FRENCH,CSISO27LATINGREEK1,CSISO49INIS,CSISO50INIS8,CSISO51INISCYRILLIC,CSISO58GB1988,CSISO60DANISHNORWEGIAN,CSISO60NORWEGIAN1,CSISO61NORWEGIAN2,CSISO69FRENCH,CSISO84PORTUGUESE2,CSISO85SPANISH2,CSISO86HUNGARIAN,CSISO88GREEK7,CSISO89ASMO449,CSISO90,CSISO92JISC62991984B,CSISO99NAPLPS,CSISO103T618BIT,CSISO111ECMACYRILLIC,CSISO121CANADIAN1,CSISO122CANADIAN2,CSISO139CSN369103,CSISO141JUSIB1002,CSISO143IECP271,CSISO150,CSISO150GREEKCCITT,CSISO151CUBA,CSISO153GOST1976874,CSISO646DANISH,CSISO2022CN,CSISO2022JP,CSISO2022JP2,CSISO2022KR,CSISO2033,CSISO5427CYRILLIC,CSISO5427CYRILLIC1981,CSISO5428GREEK,CSISO10367BOX,CSISOLATIN1,CSISOLATIN2,CSISOLATIN3,CSISOLATIN4,CSISOLATIN5,CSISOLATIN6,CSISOLATINARABIC,CSISOLATINCYRILLIC,CSISOLATINGREEK,CSISOLATINHEBREW,CSKOI8R,CSKSC5636,CSMACINTOSH,CSNATSDANO,CSNATSSEFI,CSN_369103,CSPC8CODEPAGE437,CSPC775BALTIC,CSPC850MULTILINGUAL,CSPC862LATINHEBREW,CSPCP852,CSSHIFTJIS,CSUCS4,CSUNICODE,CUBA,CWI-2,CWI,CYRILLIC,DE,DEC-MCS,DEC,DECMCS,DIN_66003,DK,DS2089,DS_2089,E13B,EBCDIC-AT-DE-A,EBCDIC-AT-DE,EBCDIC-BE,EBCDIC-BR,EBCDIC-CA-FR,EBCDIC-CP-AR1,EBCDIC-CP-AR2,EBCDIC-CP-BE,EBCDIC-CP-CA,EBCDIC-CP-CH,EBCDIC-CP-DK,EBCDIC-CP-ES,EBCDIC-CP-FI,EBCDIC-CP-FR,EBCDIC-CP-GB,EBCDIC-CP-GR,EBCDIC-CP-HE,EBCDIC-CP-IS,EBCDIC-CP-IT,EBCDIC-CP-NL,EBCDIC-CP-NO,EBCDIC-CP-ROECE,EBCDIC-CP-SE,EBCDIC-CP-TR,EBCDIC-CP-US,EBCDIC-CP-WT,EBCDIC-CP-YU,EBCDIC-CYRILLIC,EBCDIC-DK-NO-A,EBCDIC-DK-NO,EBCDIC-ES-A,EBCDIC-ES-S,EBCDIC-ES,EBCDIC-FI-SE-A,EBCDIC-FI-SE,EBCDIC-FR,EBCDIC-GREEK,EBCDIC-INT,EBCDIC-INT1,EBCDIC-IS-FRISS,EBCDIC-IT,EBCDIC-JP-E,EBCDIC-JP-KANA,EBCDIC-PT,EBCDIC-UK,EBCDIC-US,EBCDICATDE,EBCDICATDEA,EBCDICCAFR,EBCDICDKNO,EBCDICDKNOA,EBCDICES,EBCDICESA,EBCDICESS,EBCDICFISE,EBCDICFISEA,EBCDICFR,EBCDICISFRISS,EBCDICIT,EBCDICPT,EBCDICUK,EBCDICUS,ECMA-114,ECMA-118,ECMA-128,ECMA-CYRILLIC,ECMACYRILLIC,ELOT_928,ES,ES2,EUC-CN,EUC-JISX0213,EUC-JP,EUC-KR,EUC-TW,EUCCN,EUCJP,EUCKR,EUCTW,FI,FR,GB,GB2312,GB13000,GB18030,GBK,GB_1988-80,GB_198880,GEORGIAN-ACADEMY,GEORGIAN-PS,GOST_19768-74,GOST_19768,GOST_1976874,GREEK-CCITT,GREEK,GREEK7-OLD,GREEK7,GREEK7OLD,GREEK8,GREEKCCITT,HEBREW,HP-ROMAN8,HPROMAN8,HU,IBM-856,IBM-922,IBM-930,IBM-932,IBM-933,IBM-935,IBM-937,IBM-939,IBM-943,IBM-1046,IBM-1124,IBM-1129,IBM-1132,IBM-1133,IBM-1160,IBM-1161,IBM-1162,IBM-1163,IBM-1164,IBM037,IBM038,IBM256,IBM273,IBM274,IBM275,IBM277,IBM278,IBM280,IBM281,IBM284,IBM285,IBM290,IBM297,IBM367,IBM420,IBM423,IBM424,IBM437,IBM500,IBM775,IBM813,IBM819,IBM848,IBM850,IBM851,IBM852,IBM855,IBM856,IBM857,IBM860,IBM861,IBM862,IBM863,IBM864,IBM865,IBM866,IBM866NAV,IBM868,IBM869,IBM870,IBM871,IBM874,IBM875,IBM880,IBM891,IBM903,IBM904,IBM905,IBM912,IBM915,IBM916,IBM918,IBM920,IBM922,IBM930,IBM932,IBM933,IBM935,IBM937,IBM939,IBM943,IBM1004,IBM1026,IBM1046,IBM1047,IBM1089,IBM1124,IBM1129,IBM1132,IBM1133,IBM1160,IBM1161,IBM1162,IBM1163,IBM1164,IEC_P27-1,IEC_P271,INIS-8,INIS-CYRILLIC,INIS,INIS8,INISCYRILLIC,ISIRI-3342,ISIRI3342,ISO-2022-CN-EXT,ISO-2022-CN,ISO-2022-JP-2,ISO-2022-JP-3,ISO-2022-JP,ISO-2022-KR,ISO-8859-1,ISO-8859-2,ISO-8859-3,ISO-8859-4,ISO-8859-5,ISO-8859-6,ISO-8859-7,ISO-8859-8,ISO-8859-9,ISO-8859-10,ISO-8859-11,ISO-8859-13,ISO-8859-14,ISO-8859-15,ISO-8859-16,ISO-10646,ISO-10646/UCS2,ISO-10646/UCS4,ISO-10646/UTF-8,ISO-10646/UTF8,ISO-CELTIC,ISO-IR-4,ISO-IR-6,ISO-IR-8-1,ISO-IR-9-1,ISO-IR-10,ISO-IR-11,ISO-IR-14,ISO-IR-15,ISO-IR-16,ISO-IR-17,ISO-IR-18,ISO-IR-19,ISO-IR-21,ISO-IR-25,ISO-IR-27,ISO-IR-37,ISO-IR-49,ISO-IR-50,ISO-IR-51,ISO-IR-54,ISO-IR-55,ISO-IR-57,ISO-IR-60,ISO-IR-61,ISO-IR-69,ISO-IR-84,ISO-IR-85,ISO-IR-86,ISO-IR-88,ISO-IR-89,ISO-IR-90,ISO-IR-92,ISO-IR-98,ISO-IR-99,ISO-IR-100,ISO-IR-101,ISO-IR-103,ISO-IR-109,ISO-IR-110,ISO-IR-111,ISO-IR-121,ISO-IR-122,ISO-IR-126,ISO-IR-127,ISO-IR-138,ISO-IR-139,ISO-IR-141,ISO-IR-143,ISO-IR-144,ISO-IR-148,ISO-IR-150,ISO-IR-151,ISO-IR-153,ISO-IR-155,ISO-IR-156,ISO-IR-157,ISO-IR-166,ISO-IR-179,ISO-IR-193,ISO-IR-197,ISO-IR-199,ISO-IR-203,ISO-IR-209,ISO-IR-226,ISO646-CA,ISO646-CA2,ISO646-CN,ISO646-CU,ISO646-DE,ISO646-DK,ISO646-ES,ISO646-ES2,ISO646-FI,ISO646-FR,ISO646-FR1,ISO646-GB,ISO646-HU,ISO646-IT,ISO646-JP-OCR-B,ISO646-JP,ISO646-KR,ISO646-NO,ISO646-NO2,ISO646-PT,ISO646-PT2,ISO646-SE,ISO646-SE2,ISO646-US,ISO646-YU,ISO2022CN,ISO2022CNEXT,ISO2022JP,ISO2022JP2,ISO2022KR,ISO6937,ISO8859-1,ISO8859-2,ISO8859-3,ISO8859-4,ISO8859-5,ISO8859-6,ISO8859-7,ISO8859-8,ISO8859-9,ISO8859-10,ISO8859-11,ISO8859-13,ISO8859-14,ISO8859-15,ISO8859-16,ISO88591,ISO88592,ISO88593,ISO88594,ISO88595,ISO88596,ISO88597,ISO88598,ISO88599,ISO885910,ISO885911,ISO885913,ISO885914,ISO885915,ISO885916,ISO_646.IRV:1991,ISO_2033-1983,ISO_2033,ISO_5427-EXT,ISO_5427,ISO_5427:1981,ISO_5427EXT,ISO_5428,ISO_5428:1980,ISO_6937-2,ISO_6937-2:1983,ISO_6937,ISO_6937:1992,ISO_8859-1,ISO_8859-1:1987,ISO_8859-2,ISO_8859-2:1987,ISO_8859-3,ISO_8859-3:1988,ISO_8859-4,ISO_8859-4:1988,ISO_8859-5,ISO_8859-5:1988,ISO_8859-6,ISO_8859-6:1987,ISO_8859-7,ISO_8859-7:1987,ISO_8859-8,ISO_8859-8:1988,ISO_8859-9,ISO_8859-9:1989,ISO_8859-10,ISO_8859-10:1992,ISO_8859-14,ISO_8859-14:1998,ISO_8859-15:1998,ISO_9036,ISO_10367-BOX,ISO_10367BOX,ISO_69372,IT,JIS_C6220-1969-RO,JIS_C6229-1984-B,JIS_C62201969RO,JIS_C62291984B,JOHAB,JP-OCR-B,JP,JS,JUS_I.B1.002,KOI-7,KOI-8,KOI8-R,KOI8-T,KOI8-U,KOI8,KOI8R,KOI8U,KSC5636,L1,L2,L3,L4,L5,L6,L7,L8,L10,LATIN-GREEK-1,LATIN-GREEK,LATIN1,LATIN2,LATIN3,LATIN4,LATIN5,LATIN6,LATIN7,LATIN8,LATIN10,LATINGREEK,LATINGREEK1,MAC-CYRILLIC,MAC-IS,MAC-SAMI,MAC-UK,MAC,MACCYRILLIC,MACINTOSH,MACIS,MACUK,MACUKRAINIAN,MS-ANSI,MS-ARAB,MS-CYRL,MS-EE,MS-GREEK,MS-HEBR,MS-MAC-CYRILLIC,MS-TURK,MSCP949,MSCP1361,MSMACCYRILLIC,MSZ_7795.3,MS_KANJI,NAPLPS,NATS-DANO,NATS-SEFI,NATSDANO,NATSSEFI,NC_NC0010,NC_NC00-10,NC_NC00-10:81,NF_Z_62-010,NF_Z_62-010_(1973),NF_Z_62-010_1973,NF_Z_62010,NF_Z_62010_1973,NO,NO2,NS_4551-1,NS_4551-2,NS_45511,NS_45512,OS2LATIN1,OSF00010001,OSF00010002,OSF00010003,OSF00010004,OSF00010005,OSF00010006,OSF00010007,OSF00010008,OSF00010009,OSF0001000A,OSF00010020,OSF00010100,OSF00010101,OSF00010102,OSF00010104,OSF00010105,OSF00010106,OSF00030010,OSF0004000A,OSF0005000A,OSF05010001,OSF100201A4,OSF100201A8,OSF100201B5,OSF100201F4,OSF100203B5,OSF1002011C,OSF1002011D,OSF1002035D,OSF1002035E,OSF1002035F,OSF1002036B,OSF1002037B,OSF10010001,OSF10020025,OSF10020111,OSF10020115,OSF10020116,OSF10020118,OSF10020122,OSF10020129,OSF10020352,OSF10020354,OSF10020357,OSF10020359,OSF10020360,OSF10020364,OSF10020365,OSF10020366,OSF10020367,OSF10020370,OSF10020387,OSF10020388,OSF10020396,OSF10020402,OSF10020417,PT,PT2,R8,ROMAN8,RUSCII,SE,SE2,SEN_850200_B,SEN_850200_C,SHIFT-JIS,SHIFT_JIS,SHIFT_JISX0213,SJIS,SS636127,ST_SEV_358-88,T.61-8BIT,T.61,T.618BIT,TCVN-5712,TCVN,TCVN5712-1,TCVN5712-1:1993,TIS-620,TIS620-0,TIS620.2529-1,TIS620.2533-0,TIS620,TS-5881,TSCII,UCS-2,UCS-2BE,UCS-2LE,UCS-4,UCS-4BE,UCS-4LE,UCS2,UCS4,UHC,UJIS,UK,UNICODE,UNICODEBIG,UNICODELITTLE,US-ASCII,US,UTF-7,UTF-8,UTF-16,UTF-16BE,UTF-16LE,UTF-32,UTF-32BE,UTF-32LE,UTF7,UTF8,UTF16,UTF16BE,UTF16LE,UTF32,UTF32BE,UTF32LE,VISCII,WCHAR_T,WIN-SAMI-2,WINBALTRIM,WINDOWS-1250,WINDOWS-1251,WINDOWS-1252,WINDOWS-1253,WINDOWS-1254,WINDOWS-1255,WINDOWS-1256,WINDOWS-1257,WINDOWS-1258,WINSAMI2,WS2,YU
指令:
#iconv -f gb2312 -t utf-8 gb1.txt > gb2.txt
将gb1里的编码从GB2312转化成UTF-8 并重定向到gb2.txt
除了iconv命令,我们在linux系统下的man page的第三节还可以看到一组iconv函数。它们分别是
iconv_ticonv_open(constchar*tocode,constchar*fromcode);
size_ticonv(iconv_tcd,char**inbuf,size_t*inbytesleft,char**outbuf,size_t*outbytesleft);
inticonv_close(iconv_tcd);
iconv_open函数用来打开一个编码转换的流,iconv函数的作用是实际进行转换,iconv_close函数的作用就是关闭这个流。实际用法参见下面的例子,下面是一个将UTF-8码转换成GBK码的例子,我们假设已经有了一个uft8编码的输入缓冲区inbuf以及这个缓冲区的长度inlen。
iconv_tcd=iconv_open("GBK","UTF-8");
char*outbuf=(char*)malloc(inlen*4);
bzero(outbuf,inlen*4);
char*in=inbuf;
char*out=outbuf;
size_toutlen=inlen*4;
iconv(cd,&in,(size_t*)&inlen,&out,&outlen);
outlen=strlen(outbuf);
printf("%s\n",outbuf);
free(outbuf);
iconv_close(cd);
非常值得注意的地方是:iconv函数会修改参数in和参数out指针所指向的地方,也就是说,在调用iconv函数之前,我们的in和inbuf指针以及out和outbuf指针指向的是同一块内存区域,但是调用之后out指针所指向的地方就不是outbuf了,同理in指针。所以要
char*in=inbuf;char*out=outbuf;
另存一下,使用或者释放内存的时候也要使用原先的那个指针outbuf和inbuf。
php下使用方法
unix下安装PHP的module,需要重新编译PHP,Windows下安装模板,只需将php.ini里的配置打开相应的dll就可,例如,需要加入gb库的支持,需要如下设置:
extension_dir=“C:/ipaddr/php/extensions/”
(注意,建议写全地址,并且后面加上/,很多时候是因为这里设置不对,才导致无法加载其它模块的dll的)
再打开
extension=php_gd2.dll
但如果是安装iconv.dll,按上面方法,打开php_iconv.dll后,还是无法开启iconv模块,需要如下配置:
a.上iconv的官方下载站点
下面Windows版的iconv文件:libiconv-1.9.1.bin.woe32.zip
将这文件解压,将bin/下面的charset.dll,iconv.dll,iconv.exe拷贝到c:/windows/ (或其它的系统PATH中)
(ipaddr提醒你,这步是必须的,php_iconv.dll也是调用GNU的iconv库的,所以,先要安装GNU的iconv库)
b.开启php.ini里面的php_iconv.dll
c.重启Apache,再在phpinfo();检测是否开启iconv。
最近在做一个程序,需要用到iconv函数把抓取来过的utf-8编码的页面转成gb2312, 发现只有用iconv函数把抓取过来的数据一转码数据就会无缘无故的少一些。 让我郁闷了好一会儿,去网上一查资料才知道这是iconv函数的一个bug。iconv在转换字符”—”到gb2312时会出错
解决方法很简单,就是在需要转成的编码后加 “//IGNORE” 也就是iconv函数第二个参数后.如下:
以下为引用的内容:
iconv(“UTF-8″,”GB2312//IGNORE”,$data)
ignore的意思是忽略转换时的错误,如果没有ignore参数,所有该字符后面的字符串都无法被保存。
这个iconv()这个函数,在php5中是内置的.
列子
<?phpecho$str=‘你好,这里是卖咖啡!’;echo‘<br/>’;echoiconv(‘GB2312′,‘UTF-8′,$str);//将字符串的编码从GB2312转到UTF-8echo‘<br/>’;echoiconv_substr($str,1,1,‘UTF-8′);//按字符个数截取而非字节print_r(iconv_get_encoding());//得到当前页面编码信息echoiconv_strlen($str,‘UTF-8′);//得到设定编码的字符串长度//也有这样用的$content=iconv(“UTF-8″,”gbk//TRANSLIT”,$content);?>使用注意问题
在使用这个函数进行字符串编码转换时,需要注意,如果将utf-8转换为gb2312时,可能会出现字符串被截断的情况发生。
stringiconv(string$in_charset,string$out_charset,string$str)
在使用这个函数进行字符串编码转换时,需要注意,如果将utf-8转换为gb2312时,可能会出现字符串被截断的情况发生。
此时可以使用以下方法解决:
//author:zhxia$str=iconv('utf-8',"gb2312//TRANSLIT",file_get_contents($filepath));
即在第二个参数出添加红色字部分,表示:如果在目标编码中找不到与源编码相匹配的字符,会选择相似的字符进行转换。
此处也可以使用://IGNORE 这个参数,表示忽略不能转换的字符。

以上转自:http://baike.baidu.com/link?url=17S9vgAim-xyYluIA00db7eoyuueWWMusP3r6hTSRvwSy9bPCCQmOKbYNgPYo32vdBz5NFDXuzzX_DS_C6XVua

代码展示:

 UTFhandle = iconv_open("UTF-8","GB2312");

 int CharetCov(char* srcBuf,  int srcLen, char * destBuf, int destLen)
{ int srcLen1 = srcLen;
int destLen1 = destLen;
int err= iconv(UTFhandle,&srcBuf, (size_t *)&srcLen1, &destBuf, (size_t *)&destLen1);
if(err < )
{ err = errno;
errno = ;
} return err;
} iconv_close(UTFhandle);

C++用iconv进行页面字符转换的更多相关文章

  1. iconv字符转换

    iconv是linux下的编码转换的工具,它提供命令行的使用和函数接口支持 函数接口 iconv函数族的头文件是iconv.h,使用前需包含之.#include <iconv.h> ico ...

  2. iconv简介(1、字符串|文件字符转换:iconv用于将一种已知的字符集文件转换成另一种已知的字符集文件)(2、编程语言函数功能的相似性:iconv不仅再php中有用,而且c语言中也有用,还有linux等)

    iconv简介(1.字符串|文件字符转换:iconv用于将一种已知的字符集文件转换成另一种已知的字符集文件)(2.编程语言函数功能的相似性:iconv不仅再php中有用,而且c语言中也有用,还有lin ...

  3. PHP iconv()函数转字符编码的问题(转)

    PHP iconv()函数转字符编码的问题(转) 载自:http://www.nowamagic.net/php/php_FunctionIconv.php 在php函数库有一个函数:iconv(), ...

  4. 【JavaScript】JS 中 原始字符串 和 HTML 字符转换

    参考资料:http://www.sjyhome.com/javascript/js-html-escape.html JS转换HTML转义符 SJY • 发表于:2013年10月05日 17:04 • ...

  5. 带毫秒的字符转换成时间(DateTime)格式的通用方法

    C#自身有更好的方式,Net任意String格式转换为DateTime类型 ====================================================== 原文 ==== ...

  6. sql字符转换函数大全

    删除空格 有两个函数,TTRIM()和LTRIM(),可以用来从字符串中剪掉空格.函数LTRIM()去除应该字符串前面的所有空格:函数RTRIM()去除一个字符串尾部的所有空格.这些和vbscript ...

  7. python_way,day3 集合、函数、三元运算、lambda、python的内置函数、字符转换、文件处理

    python_way,day3 一.集合 二.函数 三.三元运算 四.lambda 五.python的内置函数 六.字符转换 七.文件处理 一.集合: 1.集合的特性: 特性:无序,不重复的序列 如果 ...

  8. js字符转换成整型 parseInt()函数规程Number()函数

    今天在做一个js加法的时候,忘记将字符转换成整型,导致将加号认为是连接符,  在运算前要先对字符井行类型转换,使用parseInt()函数   使用Number()将字符转换成int型效果更好

  9. mysql将字符转换成数字

    在操作mysql时,经常需要将字符转换成数字,这一步虽然简单,但不常用的话也很容易忘记,现将在网上找到的方法记录如下: 1.将字符的数字转成数字,比如'0'转成0可以直接用加法来实现例如:将pony表 ...

随机推荐

  1. MongoDB入门教程二[MongoDB Shell 简介与使用]

    MongoDB Shell 是MongoDB自带的JavaScript Shell,随MongoDB一同发布,它是MonoDB客户端工具,可以在Shell中使用命令与MongoDB实例交互,对数据库的 ...

  2. java jdbc深入理解(connection与threadlocal与数据库连接池和事务实)

    1.jdbc连接数据库,就这样子 Class.forName("com.mysql.jdbc.Driver");java.sql.Connection conn = DriverM ...

  3. 新一代数据库TiDB在美团的实践

    1. 背景和现状 近几年,基于MySQL构建的传统关系型数据库服务,已经很难支撑美团业务的爆发式增长,这就促使我们去探索更合理的数据存储方案和实践新的运维方式.而随着分布式数据库大放异彩,美团DBA团 ...

  4. LINUX按键驱动程序

    <<混杂设备驱动模型>> <混杂设设备的描述> <混在设备的概念> 在linux系统中,存在一类字符设备,他们拥有相同的主设备号(10),但是次设备号不 ...

  5. redis 客户端命令

    Redis 通过监听一个 TCP 端口或者 Unix socket 的方式来接收来自客户端的连接 1 .CLIENT LIST 返回连接到 redis 服务的客户端列表 2 .CLIENT SETNA ...

  6. 【WIN10】程序內文件讀取與保存

    DEMO下載:http://yunpan.cn/cFHIZNmAy4ZtH  访问密码 cf79 1.讀取與保存文件 Assets一般被認為是保存用戶文件數據的地方.同時,微軟還支持用戶自己創建文件夾 ...

  7. Lua脚本

    应用场景: 游戏开发 独立应用脚本 Web 应用脚本 扩展和数据库插件如:MySQL Proxy 和 MySQL WorkBench 安全系统,如入侵检测系统 1. 在很多时候,我们可以将Lua直接嵌 ...

  8. Linux怎么开启ssh

    一.查看ssh开启状态 service ssh status 这是已经开启了的状态 二.如果没有开启  键入以下命令开启 service ssh start 三.开启后如果不能利用xshell远程访问 ...

  9. Html基本操作实例代码

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD ...

  10. HTML5 Canvas,WebGL,CSS Shaders,GLSL的暧昧关系

    一.前面的所以然 技术的发展日新月异,说不定回家钓几天鱼,就出来个新东西了.新事物新技术发展的初期,你无法预见其未来之趋势,生命诚可贵,没有必要花过多时间深入研究这些新东西,不过,知道了大概,了解个全 ...