php 读取文件乱码问题

yipeiwu_com4年前PHP代码库
网上的解决办法说抓取后用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中生成UUID自定义函数分享

UUID 全称是 Universally unique identifier,它是一种识别符,使用任意的计算机都可以生成,不需要一个中央数据库进行管理,即可以保证几乎没有重复的几率。而...

PHP生成excel时单元格内换行问题的解决方法

翻出来源码开了下,字符串中使用换行的方法为"Name:{$name}\nAddress:{$adress}\nCity:{$city}\nCountry:{$country}\n ......

做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)

asp函数代码:复制代码 代码如下:function checkip(checkstring)'用正则判断IP是否合法dim re1set re1=new RegExpre1.patte...

理解php原理的opcodes(操作码)

Opcondes是一种php脚本编译后的中间语言,就像Java的Byte Code,或者.NET 的MSL 。(都没了解过~)   举个文中的例子 复制代码 代码如下: <?php...

PHP魔术方法__GET、__SET使用实例

__get()  - 读取不可访问属性的值时,__get() 会被调用。 __set()  - 在给不可访问属性赋值时,__set() 会被调用。 复制代码 代码如下: <?...