php字符编码转换gb2312转为utf8的解决办法
感兴趣的小伙伴,下面一起跟随php教程的小玲来看看吧!
在php中
这篇文章主要为大家详细介绍了php字符编码转换gb2312转为utf8的简单示例,具有一定的参考价值,可以用来参考一下。
感兴趣的小伙伴,下面一起跟随php教程的小玲来看看吧!
在php中字符编码转换我们一般会用到iconv与mb_convert_encoding进行操作,但是mb_convert_encoding在转换性能上比iconv要差很多哦。string iconv ( string in_charset, string out_charset, string str ) 注意:第二个参数,除了可以指定要转化到的编码以外,还可以增加两个后缀://TRANSLIT 和 //IGNORE,其中 //TRANSLIT 会自动将不能直接转化的字符变成一个或多个近似的字符,//IGNORE 会忽略掉不能转化的字符,而默认效果是从第一个非法字符截断。Returns the converted string or FALSE on failure.string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] )需要先enable mbstring 扩展库,在 php.ini里将; extension=php_mbstring.dll 前面的 ; 去掉mb_convert_encoding 可以指定多种输入编码,它会根据内容自动识别,但是执行效率比iconv差太多;
使用:发现iconv在转换字符”—”到gb2312时会出错,如果没有ignore参数,所有该字符后面的字符串都无法被保存。不管怎么样,这个”—”都无法转换成功,无法输出。 另外mb_convert_encoding没有这个bug.一般情况下用 iconv,只有当遇到无法确定原编码是何种编码,或者iconv转化后无法正常显示时才用mb_convert_encoding 函数.
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <code> /** *自动判断把gbk或gb2312编码的字符串转为utf8 *能自动判断输入字符串的编码类,如果本身是utf-8就不用转换,否则就转换为utf-8的字符串 *支持的字符编码类型是:utf-8,gbk,gb2312 *@$str:string 字符串 */ function yang_gbk2utf8( $str ){ $charset = mb_detect_encoding()( $str , array ( 'UTF-8' , 'GBK' , 'GB2312' )); $charset = strtolower ( $charset ); if ( 'cp936' == $charset ){ $charset = 'GBK' ; } if ( "utf-8" != $charset ){ $str = iconv( $charset , "UTF-8//IGNORE" , $str ); } return $str ; } </code> |
代码如下:
1 2 3 4 5 6 7 8 9 | <code><?php /* php教程 www.512Pic.com */ $str = "测试ing" ; $cha =mb_detect_encoding( $str ); $s = iconv( $cha , "UTF-8" , $str ); var_dump( $s ); ?> </code> |
代码如下:
1 2 3 4 5 6 7 8 9 | <code><?php /* php教程 www.512Pic.com */ $str = "测试ing" ; $cha =mb_detect_encoding( $str ); $s = iconv( "GB2312" , "UTF-8" , $str ); var_dump( $s ); ?> </code> |
代码如下:
1 2 3 4 5 6 7 8 | <code><pre lang= "php" line= "1" > <?php /* php教程 www.512Pic.com */ $a = "我很好" ; echo mb_convert_encoding ( $a , 'UTF-8' ); ?> </code> |
代码如下:
1 2 3 4 5 6 7 8 | <code><?php /* php教程 www.512Pic.com */ $str = chr (254). "测试ing" . chr (254); $s = iconv( "GB2312" , "UTF-8" , $str ); var_dump( $s ); ?> </code> |
mb_convert_encoding的用法见官方:
http://cn.php.net/manual/en/function.mb-convert-encoding.php
PHP中的另外一个函数iconv也是用来转换字符串编码的,与上函数功能相似。
下面还有一些详细的例子:iconv — Convert string to requested character encoding(PHP 4 >= 4.0.5, PHP 5)mb_convert_encoding — Convert character encoding(PHP 4 >= 4.0.6, PHP 5)用法:string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] )需要先enable mbstring 扩展库,在 php.ini里将; extension=php_mbstring.dll 前面的 ; 去掉mb_convert_encoding 可以指定多种输入编码,它会根据内容自动识别,但是执行效率比iconv差太多;string iconv ( string in_charset, string out_charset, string str )注意:第二个参数,除了可以指定要转化到的编码以外,还可以增加两个后缀://TRANSLIT 和 //IGNORE,其中 //TRANSLIT 会自动将不能直接转化的字符变成一个或多个近似的字符,//IGNORE 会忽略掉不能转化的字符,而默认效果是从第一个非法字符截断。Returns the converted string or FALSE on failure.使用:发现iconv在转换字符”—”到gb2312时会出错,如果没有ignore参数,所有该字符后面的字符串都无法被保存。不管怎么样,这个”—”都无法转换成功,无法输出。 另外mb_convert_encoding没有这个bug.一般情况下用 iconv,只有当遇到无法确定原编码是何种编码,或者iconv转化后无法正常显示时才用mb_convert_encoding 函数.from_encoding is specified by character code name before conversion. it can be array or string – comma separated enumerated list. If it is not specified, the internal encoding will be used./* Auto detect encoding from JIS, eucjp-win, sjis-win, then convert str to UCS-2LE */$str = mb_convert_encoding($str, “UCS-2LE”, “JIS, eucjp-win, sjis-win”);/* “auto” is expanded to “ASCII,JIS,UTF-8,EUC-JP,SJIS” */$str = mb_convert_encoding($str, “EUC-JP”, “auto”);例子:
代码如下:
1 2 3 4 5 6 7 | <code><?php /* php教程 www.512Pic.com */ $content = iconv( "GBK" , "UTF-8" , $content ); $content = mb_convert_encoding( $content , "UTF-8" , "GBK" ); ?> </code> |
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <code><?php /* php教程 www.512Pic.com */ function phpcharset( $data , $to ) { if ( is_array ( $data )) { foreach ( $data as $key => $val ) { $data [ $key ] = phpcharset( $val , $to ); } } else { $encode_array = array ( 'ASCII' , 'UTF-8' , 'GBK' , 'GB2312' , 'BIG5' ); $encoded = mb_detect_encoding( $data , $encode_array ); $to = strtoupper ( $to ); if ( $encoded != $to ) { $data = mb_convert_encoding( $data , $to , $encoded ); } } return $data ; } ?> </code> |
注:关于php字符编码转换gb2312转为utf8的简单示例的内容就先介绍到这里,更多相关文章的可以留意