我们的服务器从 Debian 4 更新到 5 后,我就被击倒了。 我们切换到 UTF-8 环境,现在在浏览器上正确打印文本时遇到问题,因为所有文件都是非 utf8 编码,如 iso-8859-1、ascii 等。
我尝试了很多不同的脚本。
我尝试的第一个是“iconv”。那个不起作用,它改变了内容,但文件的编码仍然是非utf8。
enca、encamv、convmv 和我通过 apt-get 安装的其他一些工具也有同样的问题。
然后我找到了一个python代码,它使用chardet Universal Detector模块来检测文件的编码(效果很好),但是使用unicode类或codec类将其保存为utf-8不起作用,没有任何错误。
我发现将文件及其内容转换为 UTF-8 的唯一方法是 vi。
以下是我对一个文件执行的步骤:
vi filename.php
:set bomb
:set fileencoding=utf-8
:wq
就是这样。那一个工作完美。但我怎样才能通过脚本让它运行呢? 我想编写一个脚本(Linux shell),它遍历一个目录并获取所有 php 文件,然后使用 vi 和上面的命令转换它们。 由于我需要启动 vi 应用程序,我不知道如何执行以下操作:
“vi --run-command=':设置炸弹,:set fileencoding=utf-8' filename.php”
希望有人能帮助我。
最佳答案
这是我所知道的从命令行轻松执行此操作的最简单方法:
vim +"argdo se bomb | se fileencoding=utf-8 | w" $(find . -type f -name *.php)
或者如果文件数量预计相当大,那就更好了:
find . -type f -name *.php | xargs vim +"argdo se bomb | se fileencoding=utf-8 | w"
关于file - 在脚本中通过 vim 将文件编码更改为 utf-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2311750/