本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/57
用户输入:英特尔? 酷睿? i7处理器大显身手
case1
$value = iconv("UTF-8","GBK//TRANSLIT",$value);
结果:
英特尔(R) 酷睿(TM) i7处理器大显身手
case2
$value = iconv("UTF-8","GBK//IGNORE",$value);
结果:
英特尔 酷睿 i7处理器大显身手
case3
$value = iconv("UTF-8","GBK",$value);
结果:
英特尔
case4
mb_convert_encoding($value, "GBK","UTF-8");
结果:
英特尔? 酷睿? i7处理器大显身手
分析
iconv ( string $in_charset , string $out_charset , string $str )
- 如果在 out_charset 后添加了字符串 //TRANSLIT,将启用转写(transliteration)功能。这个意思是,当一个字符不能被目标字符集所表示时,它可以通过一个或多个形似的字符来近似表达。
- 如果你添加了字符串 //IGNORE,不能以目标字符集表达的字符将被默默丢弃。
- 如果out_charset 后面无添加字符串,会从第一个不能识别的字符开始截断,并生成一个E_NOTICE。因此后边的内容被丢弃了。