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文本操作类
Nov 25 PHP
PHP静态新闻列表自动生成代码
Jun 14 PHP
PHP 执行系统外部命令 system() exec() passthru()
Aug 11 PHP
php绝对路径与相对路径之间关系的的分析
Mar 03 PHP
php中邮箱地址正则表达式实现与详解
Apr 24 PHP
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
Jul 05 PHP
ThinkPHP模板中数组循环实例
Oct 30 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
Nov 22 PHP
PHP实现的回溯算法示例
Aug 15 PHP
浅谈laravel中的关联查询with的问题
Oct 10 PHP
PHP设计模式之组合模式定义与应用示例
Feb 01 PHP
PHP类的自动加载与命名空间用法实例分析
Jun 05 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插件 HTMLPurifier HTML解析器
2013/07/01 PHP
php表单提交实例讲解
2015/11/12 PHP
PHP多线程模拟实现秒杀抢单
2018/02/07 PHP
PHP实现获取毫秒时间戳的方法【使用microtime()函数】
2019/03/01 PHP
JS 页面计时器示例代码
2013/10/28 Javascript
Knockout数组(observable)使用详解示例
2013/11/15 Javascript
javascript基于HTML5 canvas制作画箭头组件
2014/06/25 Javascript
js实现鼠标悬停图片上时滚动文字说明的方法
2015/02/17 Javascript
jQuery基础的工厂函数以及定时器的经典实例分析
2016/05/20 Javascript
AngularJS 遇到的小坑与技巧小结
2016/06/07 Javascript
AngularJS中transclude用法详解
2016/11/03 Javascript
vue2.0 自定义日期时间过滤器
2017/06/07 Javascript
MVVM 双向绑定的实现代码
2018/06/21 Javascript
如何利用nodejs实现命令行游戏
2020/11/24 NodeJs
node.js 基于 STMP 协议和 EWS 协议发送邮件
2021/02/14 Javascript
python中pandas.DataFrame对行与列求和及添加新行与列示例
2017/03/12 Python
深入探究Django中的Session与Cookie
2017/07/30 Python
Python 多线程Threading初学教程
2017/08/22 Python
Python编程之黑板上排列组合,你舍得解开吗
2017/10/30 Python
Django保护敏感信息的方法示例
2019/05/09 Python
如何使用pyinstaller打包32位的exe程序
2019/05/26 Python
python全栈要学什么 python全栈学习路线
2019/06/28 Python
Python 求数组局部最大值的实例
2019/11/26 Python
keras 如何保存最佳的训练模型
2020/05/25 Python
keras模型保存为tensorflow的二进制模型方式
2020/05/25 Python
一款简洁的纯css3代码实现的动画导航
2014/10/31 HTML / CSS
blueseventy官网:铁人三项和比赛泳衣
2021/02/06 全球购物
法律进社区实施方案
2014/03/21 职场文书
团队经理竞聘书
2014/03/31 职场文书
关于保护环境的建议书
2014/05/13 职场文书
党员民主评议总结
2014/10/20 职场文书
文明单位申报材料
2014/12/23 职场文书
学校党支部公开承诺书
2015/04/30 职场文书
乡镇司法所2015年度工作总结
2015/10/14 职场文书
golang通过递归遍历生成树状结构的操作
2021/04/28 Golang
Windows中Redis安装配置流程并实现远程访问功能
2021/06/07 Redis