读写文件时遇到编码问题解决方法

读取文件时有时候会遇到编码问题,导致读取的内容为乱码,此时我们可以用iconv来进行转码。

使用file_get_contents()来读取文件内容,但是有时候文件过大的话,就会导致内存溢出,读取失败,

此时使用逐行读取的方法;

$file = ‘1.txt‘;$handle = fopen($file, ‘r‘);while (!feof($handle)) {    $line = fgets($handle);
    $encoding = mb_detect_encoding($line, array(‘GB2312‘,‘GBK‘,‘UTF-16‘,‘UCS-2‘,‘UTF-8‘,‘BIG5‘,‘ASCII‘));  //识别内容是哪一种编码。如果知道编码就忽略这一步

$con = iconv($encoding,"UTF-8",$line);
  echo $con;}

或者可以在linux上直接先对文件进行转码

$ iconv -c -f EUC-CN -t utf8 1.txt -o 2.txt

选项注解-f 原始文件编码-c 忽略错误字符-t 目标字符集-o 输出文件

原文地址:https://www.cnblogs.com/kyuang/p/9636411.html

时间: 2024-10-13 16:10:18

读写文件时遇到编码问题解决方法的相关文章

Dom4j读写文件时的编码问题

1.Dom4j写文件时的编码问题 如上图代码所示,如果使用 writer = new XMLWriter(new FileWriter(new File(filepath)), xmlFormat); 下载的xml文件编码格式如下: 原因分析: 由于FileWriter默认的输出编码是ANSI编码,而Dom4j中的wirte方法提供的内容实际是以UTF-8保存的,因此会造成包括中文字符的XML文件无法正常阅读. 解决方法: 不能使用简单的FileWriter,而应该是使用一个能指定具体输出编码的

运转hdf读写文件时呈现的过错

应该是root用户发动namenod时,root用户修正文件权限:<< chown hadoop121:hadoop121-R /home/hadoop121/hadoop-1.2.1/<<-R表明递归 <<切换到hadoop用户.root用户修正文件权限:<< chown hadoop121:hadoop121-R /home/hadoop121/hadoop-1.2.1/<<-R表明递归 <<切换到hadoop用户.更改了hado

【 D3.js 进阶系列 — 1.2 】 读取 CSV 文件时乱码的解决方法

在 D3 中使用 d3.csv 读取 CSV 文件时,有时会出现乱码问题.怎么解决呢? 1. 乱码问题 使用 d3.csv 读取 xxx.csv 文件时,如果 xxx.csv 文件使用的是 UTF-8 编码,不会有什么问题.当然,个人认为尽量使用 UTF-8 编码,可以在同一编码内使用各国文字. 但是,如果 xxx.csv 文件使用的是 utf-8 编码,使用 Microsoft Excel 打开的时候,可能会出现乱码,因为国内的 Excel 默认使用 GB2312 打开,而且在打开的时候不能选

[转]]c# 读写文件时文件正由另一进程使用

c# 读写文件时文件正由另一进程使用,因此该进程无法访问该文件,在IO处理上遇到了无法操作的问题. 文件“D:\log.txt”正由另一进程使用,因此该进程无法访问该文件. log.txt是一个日志文件,不定时都可能由另外的程序对它进行日志记录写入操作. 今需要对日志文件读取出来,显示在日志查询里,需要用到了IO流. 1. FileStream fs = File.OpenRead(url);StreamReader sr = new StreamReader((System.IO.Stream

【CodeBase】PHP读写文件/网页内容的防乱码方法

核心代码: //检查字符串的编码 $charset=mb_detect_encoding($doc,['ASCII','UTF-8','GB2312','GBK','BIG5']); //字符串转换为UTF8 $doc = iconv($charset, 'UTF-8//TRANSLIT//IGNORE', $doc); 如果是读写文件,在不更改文件编码情况下,可以先读取内容转为系统编码,再转为文件编码格式写到文件中.

word2007在试图打开文件时遇到错误解决方法

当您尝试在 Microsoft Office Word 2007 中打开 .docx 文件时,该文件打不开.此外,您还会收到以下错误消息: Word 在试图打开文件时遇到错误.请尝试下列方法:* 检查文档或驱动器的文件权限.* 确保有足够的内存和磁盘空间.* 用文本恢复转换器打开文件. 原因 发生此问题的原因是由于恢复文档被保存为扩展名为 .docx 的自动保存文档 (*.asd) 文件. 要解决此问题,请按照下列步骤操作: 确认 .asd 文件的默认位置.为此,请按照下列步骤操作: 启动 Wo

本地文件读取(csv,txt)时字符编码问题解决

今天进行csv文件读取时,老是入库为空,因为其中有中文字符,我要通过中文字符映射成相应的编号(上升:1011,下降:1012),于是怎么也取不到编号.刚开始以为程序映射出了问题,最后日志打出来后,发现读取的csv文件内容中文全为乱码.啊啊啊,好坑.于是看了下别人写的读取csv文件的代码,果然是没有设置字符编码.通过字符读取文件,转为字节流一定要进行字符编码设置,否则跑到测试环境或生产环境会使用本地默认字符集,那就坑大了. 问题代码: BufferedReader in = new Buffere

python 处理中文文件时的编码问题,尤其是utf-8和gbk

python代码文件的编码 py文件默认是ASCII编码,中文在显示时会做一个ASCII到系统默认编码的转换,这时就会出错:SyntaxError: Non-ASCII character.需要在代码文件的第一行或第二行添加编码指示: # coding=utf-8 ##以utf-8编码储存中文字符 print '中文'像上面那样直接输入的字符串是按照代码文件的编码来处理的,如果用unicode编码,有以下2种方式: s1 = u'中文' #u表示用unicode编码方式储存信息 s2 = uni

python读写csv时中文乱码问题解决办法

参考1 参考2 CSV是英文Comma Separate Values(逗号分隔值)的缩写,顾名思义,文档的内容是由 "," 分隔的一列列的数据构成的,可以使用excel和文本编辑器等打开.CSV文档是一种编辑方便,可视化效果极佳的数据存储方式 1.python读写.追加csv方法: 'r':只读(缺省.如果文件不存在,则抛出错误) 'w':只写(如果文件不存在,则自动创建文件) 'a':附加到文件末尾(如果文件不存在,则自动创建文件) 'r+':读写(如果文件不存在,则抛出错误) 1