解决iconv函数无法转换某些中文的问题

原文: 解决iconv函数无法转换某些中文的问题

请先看以下代码,这个页面是GB2312编码的:

$str = '陶喆';
echo 'gb2312-'.$str;
echo '<br />';
$str = iconv( 'gb2312' ,'utf-8' , $str );
echo 'utf8-'.$str;
echo '<br />';
$str = iconv('utf-8' , 'gb2312' , $str );
echo 'gb2312-'.$str;
?>

程序做的事情很简单,首先打印出原始的陶喆,这是GB2312编码的,然后转换成UTF-8,最后再转换成GB2312。按照程序逻辑,第3行应该也打出陶喆,不过,实际的输出却是:

我们用UTF-8编码来显示这个网页,可以看到输出是

可见,在从gb2312转换到utf-8的过程中,“喆”不见了。

出现这个问题的原因是“喆”不属于gb2312字符集里的字符,而是属于gbk里的字符,所以,要从gb2312转换到utf-8就不行了

修改程序,将gb2312改成gbk,就可以解决这个问题了。

Ferris
Xu
2009-08-21

时间: 2024-10-27 22:22:42

解决iconv函数无法转换某些中文的问题的相关文章

解决json_encode 函数中文被编码成 null的办法

json格式在开发中用的十分广泛.在php中json_encode函数可以直接将数组转成 json格式,十分方便.但是有可能你在使用json_encode函数时,无奈的发现中文被编码成null了.原来json只支持转义utf-8编码格式的中文.php数组使用json_encode函数中文被编码成null的原因是转义gbk 或者别的编码时,中文被忽略了.一般出现在文档编码或者输出的内容编码是非UTF-8时,也就是说,GBK或者GB2312的中文,就会出现编码失败的现象. php数组使用json_e

PHP使用json_encode函数时不转义中文的解决方法_php技巧

本文实例讲述了PHP使用json_encode函数时不转义中文的解决方法.分享给大家供大家参考.具体方法如下: json_encode函数对于gbk中的中文字符是不会转换的或直接转换成空格了,本文就来给各位整理一个关于json不转义中文问题处理技巧,相信对大家有所帮助. 如果你调用 PHP 自带的 json_encode() 函数, 碰到中文时, 中文会被转义掉. 例如: 复制代码 代码如下: echo json_encode(array('你好')); // 输出: ["\u4f60\u597

php中字符集转换iconv函数使用总结_php技巧

iconv函数库能够完成各种字符集间的转换,是php编程中不可缺少的基础函数库. 用法如下: 复制代码 代码如下: $string = "欢迎访问!"; iconv("utf8","gbk",$string)//将字符串string  编码由utf8转变成gbk: 扩展如下: 复制代码 代码如下: echo $str= '欢迎访问!'; echo '<br />'; echo iconv('GB2312', 'UTF-8', $str

按如下函数原型用函数编程解决如下的日期转换问题(要求考虑闰年的问题)

问题描述 按如下函数原型用函数编程解决如下的日期转换问题(要求考虑闰年的问题) 解决方案 #include <stdio.h>int mt[13] = { 0 31 28 31 30 31 30 31 31 30 31 30 31 };void set2(int y){ if (y % 4 != 0) { mt[2] = 28; } else { if (y % 100 == 0 && y % 400 != 0) mt[2] = 28; else mt[2] = 29; }}v

不用iconv函数实现UTF-8编码转换GB2312的PHP函数

假如使用 iconv() 函数转换编码就相比比较简单了,不过很多虚拟主机里并不支持这个组件,我在网上找半天,才找到一个gb2312转utf-8的方法,但不能逆向转换. 这个函数如下: /******************************* //GB转UTF-8编码 *******************************/ function gb2utf8($gbstr) { global $CODETABLE; if(trim($gbstr)=="") return

php iconv mb_convert_encoding编码转换函数

用iconv函数: iconv( "utf-8", "gb2312" , "abc阳光123"); 据说这样好些,可以忽略转换时的错误! iconv( "utf-8", "gb2312//ignore" , "abc阳光123"); mb_convert_encoding的用法见官方: http://cn.php教程.net/manual/zh/function.mb-convert-e

php中iconv函数使用方法_php技巧

iconv函数库能够完成各种字符集间的转换,是php编程中不可缺少的基础函数库. 1.下载libiconv函数库http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.2.tar.gz: 2.解压缩tar -zxvf libiconv-1.9.2.tar.gz; 3.安装libiconv        #configure --prefix=/usr/local/iconv        #make        #make install 4.重新编译

linux系统上支持php的 iconv()函数的方法_php技巧

1.下载libiconv函数库http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.2.tar.gz: 2.解压缩tar -zxvf libiconv-1.9.2.tar.gz; 3.安装libiconv 复制代码 代码如下: #configure --prefix=/usr/local/iconv #make #make install 4.重新编译php 增加编译参数--with-iconv=/usr/local/iconv windows下 最近

PHP中iconv函数知识汇总

iconv函数库能够完成各种字符集间的转换,是php编程中不可缺少的基础函数库.本文内容是参考了网上的其他资源,然后结合自己的实践,有需要的小伙伴可以参考下. 今天在修改论文在线的时候,遇到了iconv这个函数.学习一下 ? 1 2 3 4header('Content-Type: application/vnd.ms-excel;charset=UTF-8"'); $name=iconv('utf-8', 'gb2312', $data['year'].'年,第'.$data['period'