当前位置: 首页 > 面试题库 >

如何以UTF-8格式写入文件?

云宾鸿
2023-03-14
问题内容

我有一堆不是UTF-8编码的文件,我正在将网站转换为UTF-8编码。

我对要保存在utf-8中的文件使用了简单的脚本,但是文件以旧编码保存:

header('Content-type: text/html; charset=utf-8');
mb_internal_encoding('UTF-8');
$fpath="folder";
$d=dir($fpath);
while (False !== ($a = $d->read()))
 {

 if ($a != '.' and $a != '..')
  {

  $npath=$fpath.'/'.$a;

  $data=file_get_contents($npath);

  file_put_contents('tempfolder/'.$a, $data);

  }

 }

如何以utf-8编码保存文件?


问题答案:

file_get_contents / file_put_contents不会神奇地转换编码。

您必须显式转换字符串。例如使用iconv()mb_convert_encoding()

尝试这个:

$data = file_get_contents($npath);
$data = mb_convert_encoding($data, 'UTF-8', 'OLD-ENCODING');
file_put_contents('tempfolder/'.$a, $data);

或者,使用PHP的流过滤器:

$fd = fopen($file, 'r');
stream_filter_append($fd, 'convert.iconv.UTF-8/OLD-ENCODING');
stream_copy_to_stream($fd, fopen($output, 'w'));


 类似资料:
  • 问题内容: 我真的很困惑。当我做: 它给我错误 UnicodeDecodeError:’ascii’编解码器无法解码位置0的字节0xef:序数不在范围内(128) 如果我做: 它工作正常。 问题 是为什么第一种方法会失败?以及如何插入宝? 如果第二种方法是正确的方法,那么使用的重点是什么? 问题答案: 我相信问题在于这是字节字符串,而不是Unicode字符串。我怀疑文件处理程序试图根据“我是将Un

  • 问题内容: 我有一些当前代码,问题是它创建了一个1252代码页文件,我想强制它创建一个UTF-8文件 任何人都可以通过此代码帮助我,因为我说它当前可以工作…但是我需要强制保存utf ..我可以传递参数或其他东西吗? 这就是我所拥有的,任何帮助我都感激不尽 问题答案: 而不是使用,创建一个。然后,你可以将其包装在中,以允许你在构造函数中传递编码。然后,你可以将数据写入语句中:

  • 问题内容: 我正在Ruby中创建哈希,并希望以正确的格式将其写入JSON文件。 这是我的代码: 这是结果文件的内容: 我正在使用Sinatra(不知道哪个版本)和Ruby v 1.8.7。 如何以正确的JSON格式将其写入文件? 问题答案: 需要JSON库,并使用。 您的temp.json文件现在看起来像:

  • 问题内容: 将您的源代码保存为UTF-8格式有多重要? Windows上的Eclipse默认使用CP1252字符编码。CP1251格式意味着可以保存非UTF-8字符,并且如果您从Word文档中复制并粘贴以进行注释,我已经看到这种情况。 我问的原因是因为出于习惯,我将Maven编码设置为UTF-8格式,最近它捕获了一些不可映射的错误。 (更新)请添加执行此操作的任何原因以及为什么,应该知道一些常见的

  • 除非我能在确保输入文件是用UTF-8编码后使测试工作,否则什么是基本错误,我真正感兴趣的问题是: 上面的方法是否保证了UTF-8文件中的缺陷也被逐个复制,或者将字符加载到的过程是否改变了这一点?

  • 问题内容: 我正在尝试将Shift_JIS格式的文件转换为UTF-8格式。为此,下面是我的方法: 读取Shift_JIS文件 每行的getBytes并将其转换为UTF-8 创建新文件并将UTF-8转换后的值写入该文件 问题是在第2步中没有发生转换。我正在使用下面的代码将Shift_JIS转换为UTF-8: 请让我知道是否需要其他信息。 我有以下两个 问题 : 1.还有其他更好的方法(步骤)来执行此