我正在尝试将php文件(client. php)从utf-8转换为iso-8859-1,以下命令对文件不执行任何操作:
iconv-fUTF-8-tISO-8859-1 client. php
执行时显示原始文件内容。
事实上,当我在执行icon v后检查文件的编码时:
file-I client. php
显示相同的旧utf-8:
client. php:text/x-php;charset=utf-8
icon实用程序应将文件中字符的编码从一个代码集转换为另一个代码集,并将结果写入标准输出。
这是一个解决方案:将stdout写入临时文件并重命名临时文件
iconv -f UTF-8 -t ISO_8859-1 client.php > client_temp.php && mv -f client_temp.php client.php
ASCII、UTF-8和ISO-8859是最低128个字符的100%相同编码。如果您的文件仅包含该范围内的字符(基本上是您在通用US英文键盘上找到的字符集),则这些编码之间没有区别。
我猜发生了什么:纯文本文件没有相关的编码元数据。你不能仅仅通过查看纯文本文件就知道它的编码。file
实用程序所做的只是给出它最好的猜测,因为没有区别,它更愿意告诉你文件是UTF-8编码的,从技术上讲很可能是这样。
除了使用以下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