php 忽略非法字符集

今天在写程序,发现把数据写入excel,有问题。就看了下,发现是非法字符集的问题,就去找了个办法来忽略非法字符集。实际上,把数据写入之时,先进行转化还是很有意义的。

用到iconv函数,手册里是这么介绍的

iconv
(PHP 4 >= 4.0.5, PHP 5, PHP 7)
iconv — 字符串按要求的字符编码来转换
说明
string iconv ( string incharset,stringout_charset , string $str )
将字符串 str 从 in_charset 转换编码到 out_charset。
参数
in_charset
输入的字符集。
out_charset
输出的字符集。

如果你在 out_charset 后添加了字符串//TRANSLIT,将启用转写(transliteration)功能。这个意思是,当一个字符不能被目标字符集所表示时,它可以通过一个或多个形似的字符来近似表达。 如果你添加了字符串//IGNORE,不能以目标字符集表达的字符将被默默丢弃。 否则,str 从第一个无效字符开始截断并导致一个 E_NOTICE。
——————– 分隔符 ——————
str
要转换的字符串。
返回值
返回转换后的字符串, 或者在失败时返回 FALSE。

大概意思就是把字符集从一种编码转到另一种编码,如果指定了后面的参数,会有其他效果。

下面是我处理的方式,先把带转化的值,转成unicode(UCS-2),用//IGNORE,忽略不能转化的部分字符,然后再转回utf-8即可。

$realvalue = iconv("UTF-8", "UCS-2//IGNORE", $realvalue);//忽略非法字符
$realvalue = iconv("UCS-2", "UTF-8", $realvalue);//转回utf8
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值