在对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. js根据IP跳转

    <script language="javascript" type="text/javascript" src="http://int.dpo ...

  2. 【基础知识】.Net基础加强第三天

    一. 里氏替换原则--类型转换 1. 里氏替换原则:当需要一个父类类型对象的时候,可以给一个子类类型的对象. 2. 里氏替换原则实际也就是发生了隐身转换 3.  a.>把子类类型赋值给父类类型, ...

  3. Xamarin 2017.11.1更新

     Xamarin 2017.11.1更新 本次更新主要解决了一些bug.Visual Studio 2017升级到15.4.2获得新功能.Visual Studio 2015需要工具-选项-Xamar ...

  4. 机器学习之路: 初识tensorflow 第一个程序

    计算图 tensorflow是一个通过计算图的形式来表示计算的编程系统tensorflow中每一个计算都是计算图上的一个节点节点之间的边描述了计算之间的依赖关系 张量 tensor张量可以简单理解成多 ...

  5. Java基础学习——多线程之线程池

    1.线程池介绍     线程池是一种线程使用模式.线程由于具有空闲(eg:等待返回值)和繁忙这种不同状态,当数量过多时其创建.销毁.调度等都会带来开销.线程池维护了多个线程,当分配可并发执行的任务时, ...

  6. Codeforces Round #294 (Div. 2)A - A and B and Chess 水题

    A. A and B and Chess time limit per test 1 second memory limit per test 256 megabytes input standard ...

  7. 使用HAproxy如何实现web站点的动静分离

    HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.      HAProxy特别 适用于那些负载特大的web站点,这些站点通常 ...

  8. MAX II Device Compatibility with 5.0-V CMOS Devices

    http://www.altera.com/literature/hb/max2/max2_mii51009.pdf The open-drain pin never drives high, onl ...

  9. SQL 脚本中的全角逗号引起【ORA-01756: 引号内的字符串没有正确结束】

    今天运行壹個小程序,功能是读取指定目录下的 SQL 脚本,并加载到内存中批量执行,之前的程序运行良好.但是今天相关开发人员更新了其中壹個 SQL 脚本,于是程序运行的时候就出错了,错误提示信息如下:批 ...

  10. matlab快捷键大全

    原文地址,点此查看 一.常用对象操作 除了一般windows窗口的常用功能键外. 1.!dir 可以查看当前工作目录的文件. !dir& 可以在dos状态下查看. 2.who   可以查看当前 ...