iconv: iconv_open(pToCharset, pFromCharset); 的附加参数//IGNORE
今天在转换一个文件时iconv() 老是返回 -1, 提示编码转换失败。
一共 30 多个文件, 原编码都是一样的,为什么有的转换会失败,返回 -1呢?
网上搜索了一下, 找到一个随加参数: //IGNORE
说是 iconv_open() 的第一个参数后面最好加上 //IGNORE
官方用法:iconv_open("gbk", "utf-8"); //将 utf-8 转换成 gbk
在实际操作中,需要(最好)在第1个参数后面加上“//IGNORE”,即: iconv_open("gbk//IGNORE", "utf-8");
我加上 //IGNORE 后,再测试,果然 iconv() 不再返回 -1
文件源编码: utf-8, 想转换成 gbk
那如果我使用一个错误的编码, 只要加上 //IGNORE,是不是不会返回 -1:
iconv_open("gbk//IGNORE", "utf-16"); //这里故意使用错误的 utf-16
测试结果: iconv() 返回 -1
这下我放心了。
又搜索了一下相关资料, //IGNORE 的意义:(http://hi.baidu.com/breezelark/item/af7ec615c9588bd8be90427c)
加://IGNORE
如果遇到无法转换的字符,就会直接舍弃,然后继续转换。
默认不加://IGNORE
如果遇到无法转换的字符,直接从第一个非法字符处前截断并抛出NOTICE(通知),iconv() 返回 -1。
2014-07-02