在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() 说明
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函数mult_iconv:转换任意维数组的字符集编码(扩展iconv函数功能)
- iconv转换UTF-8编码出错: iconv: 未知 xxx 处的非法输入序列
- PHP session回收机制及php.ini session生命期gc_maxlifetime配置/gc_maxlifetime无效
- 关于php打开文件的写法原因之辨误
- php 运算符优先级:算术运算与字符连接运算同级
- 借用php脚本快速实现php站点数据迁移
- apache安全配置:禁用目录的php执行权限
- php获取客户端IP地址方法大汇总
- centos 6下编译安装php时安装mcrypt支持库
- PHP与Unicode签名(BOM,Byte Order Mark)
- codeigniter-for-rapid-php-application-development.chm
- PHP IP地址函数 ip2long()返回值为负数对策
- 扩展的 ASCII 字符转化表
- 常见字符编码类型 汇总比较表
- 字符编码的奥秘
0 条评论。