连锁当家运维手册


php使用iconv进行从utf-8转为gb2312字符编码出错解决方案

<p>在php函数库有一个函数:iconv() 把gb2312置换成utf-8 1 $text=iconv(&quot;GB2312&quot;,&quot;UTF-8&quot;,$text); 在用$text=iconv(“UTF-8″,”GB2312″,$text)过程中,如果遇到一些特别字符时,如:”—”,英文名中的”.”等等字符,转换就断掉了。这些字符后的文字都没法继续转换了。 针对这的问题,可以用如下代码实现 1 $text=iconv(&quot;UTF-8&quot;,&quot;GBK&quot;,$text); 你没有看错,就这么简单,不使用gb2312,而写成GBK,就可以了。 还有一种方法: 第二个参数,加上//IGNORE,忽略错误,如下: 1 iconv(&quot;UTF-8&quot;,&quot;GB2312//IGNORE&quot;,$data); 没有具体比较这两种方法,感觉第一种(GBK代替gb2312)方法更好. php手册中iconv() 说明 iconv (PHP 4 &gt;= 4.0.5, PHP 5) iconv – Convert string to requested character encoding Description string iconv ( string in_charset, string out_charset, string str ) Performs a character set conversion on the string str from in_charset to out_charset. Returns the converted string or FALSE on failure. If you append the string //TRANSLIT to out_charset transliteration is activated. This means that when a character can’t be represented in the target charset, it can be approximated through one or several similarly looking characters. If you append the string //IGNORE, characters that cannot be represented in the target charset are silently discarded. Otherwise, str is cut from the first illegal character. </p> <p>例子 1. iconv() example: string iconv ( string $in_charset , string $out_charset , string $str ) 在使用这个函数进行字符串编码转换时,需要注意,如果将utf-8转换为gb2312时,可能会出现字符串被截断的情况发生。 </p> <p>此时可以使用以下方法解决: 1 $str=iconv('utf-8',&quot;gb2312//TRANSLIT&quot;,file_get_contents($filepath)); 即在第二个参数出添加红色字部分,表示:如果在目标编码中找不到与源编码相匹配的字符,会选择相似的字符进行转换。 此处也可以使用://IGNORE 这个参数,表示忽略不能转换的字符。</p>

页面列表

ITEM_HTML