PHP读取文件乱码的解决方法

   php 5的流读取函数好像默认编码是UTF-8,以前在php 4里直接file_get_contents()读取gb2312编码的正常,到了5就乱码了。网上的解决办法说抓取后用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);

时间: 2024-09-19 03:34:19

PHP读取文件乱码的解决方法的相关文章

Ubuntu解压zip文件乱码的解决方法_Linux

前言 本文介绍的是Ubuntu解压zip文件乱码的解决方法,共有2种方式解决问题,下面话不多说,来一起看看吧 一.通过unzip行命令解压,指定字符集 unzip -O CP936 xxx.zip (用GBK, GB18030也可以) 有趣的是unzip的manual中并无这个选项的说明, unzip --help对这个参数有一行简单的说明. 二.在环境变量中,指定unzip参数,总是以指定的字符集显示和解压文件 /etc/environment中加入2行 UNZIP="-O CP936&quo

php使用fgetcsv读取csv文件出现乱码的解决方法_php技巧

本文实例讲述了php使用fgetcsv读取csv文件出现乱码的解决方法.分享给大家供大家参考.具体分析如下: 一般来说在php中碰到乱码多半是编码问题,在这里我们实例分析了fgetcsv读取csv文件乱码原因所在与解决方法. 例子如下: 复制代码 代码如下: function get_csv_contents( $file_target ){  $handle  = fopen( $file_target, 'r');  while ($data = fgetcsv($handle, 1000,

iOS读取txt文件出现中文乱码的解决方法_IOS

一.情景描述:  后台给一个txt文件,编码是utf-8,在Mac电脑Xcode开发环境下读取txt文件内容,汉字会出现乱码,英文没有乱码这种情况.  二.尝试解决方法: 修改编码格式,尝试了NSUTF16StringEncoding,NSUTF8StringEncoding,NSASCIIStringEncoding编码等,出现的问题有时是中文乱码,有时是utf-8不能打开文件问题,最终问题都没能解决.  三.猜测原因: txt文件是从window电脑上创建,有可能和环境有关,第二,编码问题.

【IntelliJ IDEA】从资源文件读取出来就中文乱码的解决方法

在application.properties资源文件中设置两个自定义的属性以及属性值: com.sxd.name = "德玛西亚" com.sxd.want = "王者荣耀"   然后获取资源文件中定义的属性值出现乱码.   解决方法: 在资源文件中添加如下: banner.charset=UTF-8 server.tomcat.uri-encoding=UTF-8 spring.http.encoding.charset=UTF-8 spring.http.en

Windows文件在Ubuntu系统下出现乱码的解决方法

在Ubuntu系统中,在读取Windows文件的时候显示乱码,而在Windows读取正常,出现在问题的主要原因是编码的不同,下面小编就给大家介绍下Windows文件在Ubuntu上显示乱码的解决方法. 以Ubuntu 13.04为例 乱码原因: 乱码问题这是因为在Windows下默认的编码是GBK,在ubuntu下的是UTF-8,所以在Windows下的注释,Ubuntu下就变成来乱码. 先安装vim 在命令行模式下运行 sudo apt-get install vim 找到vim这个配置文件夹

Java读取properties配置文件时,出现中文乱码的解决方法_java

如下所示: public static String getConfig(String key) { Properties pros = new Properties(); String value = ""; try { pros.load(new InputStreamReader(Object.class.getResourceAsStream("/properties.properties"), "UTF-8")); value = pr

《Excel高手捷径:一招鲜,吃遍天》一第28招 Excel打开CSV文件为乱码的解决方法

第28招 Excel打开CSV文件为乱码的解决方法 Excel高手捷径:一招鲜,吃遍天从网页上导出数据文件存储为CSV格式的文件,使用记事本打开文字显示没有问题,使用Excel打开出现乱码的情况,如图1-112所示. 此种情况一般是导出的文件编码的问题.在简体中文环境下,Excel打开CSV文件默认是ANSI编码,如果CSV文件的编码方式为UTF-8.Unicode等编码可能就会出现文件乱码情况.解决方法如下. 设置Office语言环境(以Office 2013为例): 文件→Excel选项→语

MathType数学符号显示乱码的解决方法

Word和MathType可以完美兼容,但有时在Word中使用MathType编辑公式时,遇到输入的数学符号变成乱码的情况,那么该如何解决此问题呢?以下教程详解解决Word中MathType数学符号乱码的问题. 解决方法的具体步骤如下: 1.双击在Word中有显示问题的数学公式,这时MathType公式编辑器会自动启动. 2.在公式编辑器的界面中单击"样式"菜单下的"定义"选项. 在样式菜单下选择定义选项 3.在弹出的"定义样式"对话框中,点选&

jQuery ajax方法传递中文时出现中文乱码的解决方法_jquery

本文实例讲述了jQuery ajax方法传递中文时出现中文乱码的解决方法.分享给大家供大家参考,具体如下: 使用jQuery的ajax方法,在传递中文时出现中文乱码,按照以前的方法,修改了jquery文件中的ajaxSetting也不好使 复制代码 代码如下: sajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded;charse