php iconv中文乱码的解决办法:首先下载libiconv函数库,并安装libiconv;然后重新编译php;最后在需要转成的编码后加入参数“//IGNORE”即可。

php中iconv函数使用方法,解决中文乱码

iconv函数库能够完成各种字符集间的转换,是php编程中不可缺少的基础函数库。

1、下载libiconv函数库libiconv-1.x.tar.gz;

2、解压缩tar -zxvf libiconv-1.x.tar.gz;

3、安装libiconv#configure --prefix=/usr/local/iconv

#make

#make install

4、重新编译php 增加编译参数--with-iconv=/usr/local/iconv

windows下

iconv函数把抓取来过的utf-8编码的页面转成gb2312,只有用iconv函数把抓取过来的数据一转码数据就会无缘无故的少一些。

这是iconv函数的一个bug。iconv在转换字符"—"到gb2312时会出错,解决方法很简单,就是在需要转成的编码后加 "//IGNORE" 也就是iconv函数第二个参数后.如下:

以下为引用的内容:iconv("UTF-8","GB2312//IGNORE",$data)

ignore的意思是忽略转换时的错误,如果没有ignore参数,所有该字符后面的字符串都无法被保存。

iconv不是php的默认函数,也是默认安装的模块。需要安装才能用的。

如果是windows2000+php,你可以修改php.ini文件,将extension=php_iconv.dll前的";"去掉,同时你要copy你的原php安装文件下的iconv.dll到你的winnt/system32下(如果你的dll指向的是这个目录)

在linux环境下,用静态安装的方式,在configure时加多一项 --with-iconv就可以了,phpinfo看得到iconv的项。

使用的简单例子:$zip = new ZipArchive();//打开文件 如果文件已经存在则覆盖,如果没有则创建

if($zip->open($destination,$overwrite?ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE)!==true){

return false;

}

//向压缩文件add the files

foreach($valid_files as $file){

//$zip->addFile($file,$file);

$file_info_arr= pathinfo($file);

$filename =$file_info_arr['basename'];

$filesss = iconv('UTF-8', 'GBK//IGNORE', $filename);

$zip->addFile($file,$filesss);

}

PHP中的mb_convert_encoding与iconv函数介绍

mb_convert_encoding这个函数是用来转换编码的。原来一直对程序编码这一概念不理解,不过现在好像有点开窍了。

不过英文一般不会存在编码问题,只有中文数据才会有这个问题。比如你用Zend Studio或Editplus写程序时,用的是gbk编码,如果数据需要入数据库,而数据库的编码为utf8时,这时就要把数据进行编码转换,不然进到数据库就会变成乱码。

mb_convert_encoding的用法见官方:

http://cn.php.net/manual/zh/function.mb-convert-encoding.php

不过要使用上面的函数需要安装但是需要先enable mbstring 扩展库。

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 函数.

PHP中使用mb_convert_encoding转码的小陷阱:

在php程序中使用mb_convert_encoding()方法进行字符编码转换大家都很熟悉了,平时也在大量的使用。而且在一般情况下该方法也表现的足够好,值得表扬。但在一个项目中我们需要使用它进行UTF8到GBK的转换,在转换一些特殊字符时发现了一个不大不小的问题。具体表现为mb把在utf8可编码的字符而在gbk中不可编码的字符都转成了\0x00\0x80,这样就导致转换后的gbk字符是有问题的。

在我们的意识中,在进行字符编码转换的过程中,如果遇到目标编码不可表现的字符,转码程序应该做的是舍弃这种字符,这样虽然丢失了部分数据,但不会导致转码的字符序列不可用。不清楚mb为什么要使用上述方式而不是舍弃方式。

临时的解决方式是对转码后的字符串序列进行过滤,过滤掉所有\x00\80的字符;又或者在转义之前对utf8的字符串进行过滤,过滤掉ut8可表示而gbk不可表示的所有字符,从实现难度上来讲,第一种过滤方式比较容易做到。

php iconv gbk,php iconv中文乱码怎么办相关推荐

  1. php gbk json_encode,php中json_encode处理gbk与gb2312中文乱码问题的解决方法

    这篇文章主要介绍了php中json_encode处理gbk与gb2312中文乱码问题的解决方法,需要的朋友可以参考下 本文讲述了php中json_encode处理gbk与gb2312中文乱码问题的解决 ...

  2. Sublime Text 支持GBK , 解决中文乱码问题

    Sublime Text 支持GBK , 解决中文乱码问题 参考文章: (1)Sublime Text 支持GBK , 解决中文乱码问题 (2)https://www.cnblogs.com/tanr ...

  3. Android Studio项目编码设置为GBK或UTF-8  中文乱码 和 Eclipse项目编码设置

    Android Studio项目编码设置为GBK或UTF-8  中文乱码 1.打开File->Setting->Editor->File Encoding 进行编码设置 (只能影响你 ...

  4. 在Linux/Unix系统下用iconv命令处理文本文件中文乱码问题

    iconv命令是运行于linux/unix平台的文件编码装换工具.当我们在linux/unix系统shell查看文本文件时,常常会发现文件的中文是乱码的,这是由于文本文件的编码与当前操作系统设置的编码 ...

  5. php 和mysql中文乱码问题,常见php与mysql中文乱码问题解决办法

    常见php与mysql中文乱码问题解决办法 乱码问题1:用PHPmyAdmin操作MySQL数据库汉字显示正常,但用PHP网页显示MySQL数据时所有汉字都变成了?号. 症状:用PHPmyAdmin输 ...

  6. js html路径乱码,如何把js获取url中文乱码转码

    一:Js的Url中传递中文参数乱码问题 重点:encodeURI编码,decodeURI解码: 1.传参页面Javascript 代码:// GBK与UTF-8的转码:iconv("gbk& ...

  7. ssh汉字乱码怎么办_ssh中文乱码解决

    在终端执行命令: export LC_ALL=zh_CN.GB2312;export LANG=zh_CN.GB2312是最有效的. ======================= 1.不管用那种ss ...

  8. 服务端返回中文乱码的分析和解决办法

    一.介绍 本文介绍了Controller端,返回json的几个写法和遇到的坑,如遇见中文乱码可以按照下面详细情况介绍换一种方式解决你的问题. 二.前提背景 json格式:FastJson Contro ...

  9. MyEclipse编码设置,中文乱码解决方法,UTF-8,GBK(转)

    一.设置新建常见类型文件的默认编码格式,也就是文件保存的格式. 在不对MyEclipse进行设置的时候,默认保存文件的编码,一般跟简体中文操作系统(如windows2000,windowsXP)的编码 ...

最新文章

  1. 【java】兴唐第三十节课之零三知识点总结
  2. 这些资源网站为什么能获得5万知乎大佬推荐,而我错失了什么吗?
  3. 开发一个大型后台管理系统,应该用前后端分离的技术方案吗?
  4. linux sar命令 性能监控
  5. java文件异步上传_[Java教程]原生javascript实现文件异步上传
  6. Java常量池理解与总结
  7. worker mpm php,Ubuntu 16.04 安裝 Apache2.4 + mpm_worker + fastcgi + php7.0
  8. 【工具使用系列】关于 MATLAB 神经网络故障诊断,你需要知道的事
  9. Ext2 常见界面界面(grid分页、窗口布局、下拉框级联)
  10. ajax连接mysql数据库查询数据_ajax动态查询数据库数据并显示在前台的方法
  11. 最长上升子序列(LIS)长度的O(nlogn)算法 (动态规划)
  12. java基础之测试类
  13. WEB项目优化:雅虎优化网站的34条法则(转)
  14. 一文彻底看懂Base64原理(并使用java实现)
  15. ”当乐折扣端“最低3折之安全性是否值得体验?
  16. 条码扫描模块通过什么编程才能使用呢?
  17. java三层结构小节
  18. 银行业用户井喷式发展——解密巨杉数据库为何收获银行用户青睐
  19. 【Android 仿微信通讯录 导航分组列表-下】自定义View为RecyclerView打造右侧索引导航栏IndexBar
  20. python 整行_python dataframe 输出结果整行显示的方法

热门文章

  1. 天津丽芸网络科技有限公司不靠谱
  2. css文本超出 自动换行
  3. win8 不显示计算机,win8电脑插上u盘不显示盘符如何解决
  4. Excel 双斜线表头绘制
  5. 38.CAN通讯原理与配置
  6. MySQL导出CSV文件报错secure-file-priv权限受限mac
  7. 简单聊一聊磁珠,电感和0R电阻
  8. 模型转换:pytorch模型转onnx, onnx转tensorflow, tensorflow转tflite
  9. centos有阵列机器安装软件方法
  10. android ellipsize,Android:比android:ellipsize =“ end”更好的方法是将“ ...”添加到长字符串中?...