0

我正在尝试将 php 文件(client.php)从 utf-8 转换为 iso-8859-1,以下命令对文件没有任何作用:

iconv -f UTF-8 -t ISO-8859-1 client.php

执行后会显示原始文件内容。

事实上,当我在执行iconv后检查文件的编码时:

文件-I client.php

显示了相同的旧 utf-8:

client.php:文本/x-php;字符集=utf-8

4

3 回答 3

5

iconv 实用程序应将文件中字符的编码从一种代码集转换为另一种,并将结果写入标准输出

这是一个解决方案:将标准输出写入临时文件并重命名临时文件

iconv -f UTF-8 -t ISO_8859-1 client.php > client_temp.php && mv -f client_temp.php client.php
于 2012-05-16T15:13:29.683 回答
1

对于最低 128 个字符,ASCII、UTF-8 和 ISO-8859 是 100% 相同的编码。如果您的文件仅包含该范围内的字符(基本上是您在常见的美国英语键盘上找到的字符集),那么这些编码之间没有区别。

我猜发生了什么:纯文本文件没有关联的编码元数据。您无法仅通过查看纯文本文件来知道它的编码。该file实用程序所做的只是给出其最佳猜测,并且由于没有区别,它更愿意告诉您该文件是 UTF-8 编码的,从技术上讲它很可能是。

于 2012-05-16T11:36:08.257 回答
0

除了带有以下 One-Liner 的 jackjr300 之外,您还可以对当前文件夹中的所有 php 文件执行此操作:

for filename in *.php; do  iconv -f ISO_8859-1 -t UTF-8 $filename > temp_$filename && mv -f ./temp_$filename ./$filename; done
于 2018-08-09T09:54:49.483 回答