php 读取文件乱码问题


Posted in PHP onFebruary 20, 2010

网上的解决办法说抓取后用iconv()转码。看后我就觉 得不对劲:一个是不一定编译了iconv库,更大的问题是编码都跟流转换的时候有关(如果用了iconv实际上php转了两次码:流 -> UTF-8 -> GB2312):这不是白忙乎了吗?

仔细看了下php的文档(不知道大家都是怎么写代码的,其实文档上很清楚啊),上面关于fopen()及file_get_contents()都 提到了“默认是UTF-8,但是用户可以用stream_default_encoding()或者用户自定义上下文属性改变编码”(If unicode semantics are enabled, the default encoding of the read data is UTF-8. You can specify a different encoding by creating a custom context or by changing the default using stream_default_encoding().)。于是用stream_default_encoding('gb2312′);测试:但是 faint的是,这个函数不存在?!似乎php 6才支持。不过天无绝人之路,还有“用户自定义上下文属性”可以用。

经过更仔细的看文档,最后解决了这个问题:

//设置流的编码格式,这是文件流(file),如果是网络访问,file改成http 
$opts = array('file' => array('encoding' => 'gb2312')); 
$ctxt = stream_context_create($opts); 
file_get_contents(文件名, FILE_TEXT, $ctxt);
PHP 相关文章推荐
php include的妙用,实现路径加密
Jul 29 PHP
PHP 强制下载文件代码
Oct 24 PHP
PHP中用hash实现的数组
Jul 17 PHP
用php解析html的实现代码
Aug 08 PHP
php中通过curl smtp发送邮件
Jun 05 PHP
php数组一对一替换实现代码
Aug 31 PHP
PHP与MongoDB简介|安全|M+PHP应用实例详解
Jun 17 PHP
推荐25款php中非常有用的类库
Sep 29 PHP
深入解析WordPress中加载模板的get_template_part函数
Jan 11 PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
Mar 23 PHP
ThinkPHP项目分组配置方法分析
Mar 23 PHP
php微信公众号开发之翻页查询
Oct 20 PHP
判断是否为指定长度内字符串的php函数
Feb 16 #PHP
支持数组的ADDSLASHES的php函数
Feb 16 #PHP
php htmlspecialchars加强版
Feb 16 #PHP
php 数组二分法查找函数代码
Feb 16 #PHP
在字符串指定位置插入一段字符串的php代码
Feb 16 #PHP
GBK的页面输出JSON格式的php函数
Feb 16 #PHP
同台服务器使用缓存APC效率高于Memcached的演示代码
Feb 16 #PHP
You might like
PHP 数据结构 算法描述 冒泡排序 bubble sort
2011/07/10 PHP
php+js实现图片的上传、裁剪、预览、提交示例
2013/08/27 PHP
ThinkPHP3.1基础知识快速入门
2014/06/19 PHP
PHP实现获取域名的方法小结
2014/11/05 PHP
PHP中使用imagick实现把PDF转成图片
2015/01/26 PHP
php比较两个字符串长度的方法
2015/07/13 PHP
php 数组随机取值的简单实例
2016/05/23 PHP
如何取得中文输入的真实长度?
2006/06/24 Javascript
做网页的一些技巧(续)
2007/02/01 Javascript
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
2007/04/12 Javascript
通过JQuery实现win8一样酷炫的动态磁贴效果(示例代码)
2013/07/13 Javascript
js插件方式打开pdf文件(浏览器pdf插件分享)
2013/12/20 Javascript
bootstrap-treeview自定义双击事件实现方法
2016/01/09 Javascript
vue制作加载更多功能的正确打开方式
2016/10/12 Javascript
AngularJS基于ngInfiniteScroll实现下拉滚动加载的方法
2016/12/14 Javascript
JS实现禁止高频率连续点击的方法【基于ES6语法】
2017/04/25 Javascript
使用vue构建移动应用实战代码
2017/08/02 Javascript
react-native ListView下拉刷新上拉加载实现代码
2017/08/03 Javascript
Node.js自定义实现文件路由功能
2017/09/22 Javascript
微信小程序使用form表单获取输入框数据的实例代码
2018/05/17 Javascript
使用layui的router来进行传参的实现方法
2019/09/06 Javascript
js单线程的本质 Event Loop解析
2019/10/29 Javascript
JavaScript实现左右滚动电影画布
2020/02/06 Javascript
微信小程序scroll-view的滚动条设置实现
2020/03/02 Javascript
vant 中van-list的用法说明
2020/11/11 Javascript
python进阶教程之函数对象(函数也是对象)
2014/08/30 Python
Python装饰器的函数式编程详解
2015/02/27 Python
HTML5之SVG 2D入门3—文本与图像及渲染文本介绍
2013/01/30 HTML / CSS
Camille Jewelry官网:现代女性时尚首饰
2019/07/07 全球购物
英国最大的笔记本电脑直销专家:Laptops Direct
2019/07/20 全球购物
数据库什么时候应该被重组
2012/11/02 面试题
孝敬父母的演讲稿
2014/05/14 职场文书
2015年招聘工作总结
2014/12/12 职场文书
公司老总年会致辞
2015/07/30 职场文书
为什么MySQL 删除表数据 磁盘空间还一直被占用
2021/10/16 MySQL
springboot创建的web项目整合Quartz框架的项目实践
2022/06/21 Java/Android