php使用iconv进行从utf-8转为gb2312字符编码出错解决方案
2011-09-29 11:11
585 查看
原文:http://www.path8.net/tn/archives/2560
在php函数库有一个函数:iconv()
把gb2312置换成utf-8
在用$text=iconv("UTF-8","GB2312",$text)过程中,如果遇到一些特别字符时,如:"—",英文名中的"."等等字符,转换就断掉了。这些字符后的文字都没法继续转换了。
针对这的问题,可以用如下代码实现
你没有看错,就这么简单,不使用gb2312,而写成GBK,就可以了。
还有一种方法:
第二个参数,加上//IGNORE,忽略错误,如下:
没有具体比较这两种方法,感觉第一种(GBK代替gb2312)方法更好.
php手册中iconv() 说明
string iconv ( string $in_charset , string $out_charset , string $str )
在使用这个函数进行字符串编码转换时,需要注意,如果将utf-8转换为gb2312时,可能会出现字符串被截断的情况发生。
此时可以使用以下方法解决:
//author:zhxia
$str=iconv('utf-8',"gb2312//TRANSLIT",file_get_contents($filepath));
即在第二个参数出添加红色字部分,表示:如果在目标编码中找不到与源编码相匹配的字符,会选择相似的字符进行转换。
此处也可以使用://IGNORE 这个参数,表示忽略不能转换的字符。
在php函数库有一个函数:iconv()
把gb2312置换成utf-8
$text=iconv("GB2312","UTF-8",$text);
在用$text=iconv("UTF-8","GB2312",$text)过程中,如果遇到一些特别字符时,如:"—",英文名中的"."等等字符,转换就断掉了。这些字符后的文字都没法继续转换了。
针对这的问题,可以用如下代码实现
$text=iconv("UTF-8","GBK",$text);
你没有看错,就这么简单,不使用gb2312,而写成GBK,就可以了。
还有一种方法:
第二个参数,加上//IGNORE,忽略错误,如下:
iconv("UTF-8","GB2312//IGNORE",$data);
没有具体比较这两种方法,感觉第一种(GBK代替gb2312)方法更好.
php手册中iconv() 说明
iconv (PHP 4 >= 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.
|
在使用这个函数进行字符串编码转换时,需要注意,如果将utf-8转换为gb2312时,可能会出现字符串被截断的情况发生。
此时可以使用以下方法解决:
//author:zhxia
$str=iconv('utf-8',"gb2312//TRANSLIT",file_get_contents($filepath));
即在第二个参数出添加红色字部分,表示:如果在目标编码中找不到与源编码相匹配的字符,会选择相似的字符进行转换。
此处也可以使用://IGNORE 这个参数,表示忽略不能转换的字符。
相关文章推荐
- php使用iconv进行从utf-8转为gb2312字符编码出错解决方案
- php的函数iconv在转"utf-8"到"gb2312"时会自动截断
- 在UTF-8页中接收和使用以GB2312方式进行URL编码的中文数据
- asp 页面中gb2312页面接受utf-8编码字符的变量,字符编码转化时出错,中文字数是偶数的话就不会少,奇数的话就会少
- PHP字符编码问题之GB2312 VS UTF-8解决方法
- 字符编码和python使用encode,decode转换utf-8, gbk, gb2312
- GB2312、UTF-8等编码转换函数iconv()使用方法
- 字符编码和python使用encode,decode转换utf-8, gbk, gb2312的问题
- php字符编码utf-8转gb2312的问题解决
- 在PHP中进行GB2312与UTF-8的互换。
- 中文乱码问题 ? 原因:JSP中默认使用iso-8859-1字符编码方式,不支持中文 ? 常见的支持中文的编码方式:gb2312(常用简体汉字)、gbk(简体和繁体汉字)、utf-8 ? 解决中文乱码
- php关于使用iconv(...)函数对字符进行中文转换时,遇到的一个问题
- PHP字符编码问题之GB2312 VS UTF-8
- PhpNewsReader---不使用iconv进行字符编码转换
- PHP字符编码问题之GB2312 VS UTF-8解决方法
- php字符编码转换之gb2312转为utf8
- 使用iconv进行内码转换(Big5->GB2312)
- Xcode7 使用NSURLRequest进行HTTP请求出错解决方案
- 字符编码详解(ASCII ,utf-8,unicode,gbk,gb2312,iso 8859-1等)
- php usort 使用用户自定义的比较函数对二维数组中的值进行排序