提问者:小点点

Iconv在MacOSX 10.7.3什么都不做


我正在尝试将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


共3个答案

匿名用户

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