Nov*_*der 51 vi encoding file utf-8 character-encoding
我的服务器从Debian 4更新到5后我才被打倒.我们切换到UTF-8环境,现在我们在浏览器上正确打印文本时遇到问题,因为所有文件都是非utf8编码,如iso- 8859-1,ascii等
我尝试了很多不同的脚本.
我试过的第一个是"iconv".那个不起作用,它改变了内容,但是enconding的文件仍然是非utf8.
与enca,encamv,convmv和我通过apt-get安装的其他工具相同的问题.
然后我发现了一个python代码,它使用chardet Universal Detector模块来检测文件的编码(工作正常),但使用unicode类或编解码器类将其保存为utf-8不起作用,没有任何错误.
我发现将文件及其内容转换为UTF-8的唯一方法是vi.
这些是我为一个文件执行的步骤:
vi filename.php
:set bomb
:set fileencoding=utf-8
:wq
Run Code Online (Sandbox Code Playgroud)
而已.那一个很完美.但是如何通过脚本运行它.我想编写一个脚本(linux shell),它遍历一个获取所有php文件的目录,然后使用上面的命令使用vi转换它们.因为我需要启动vi应用程序,我不知道如何做这样的事情:
"vi --run-command=':set bomb, :set fileencoding=utf-8' filename.php"
希望可以有人帮帮我.
Joh*_*don 23
这是我所知道的从命令行轻松完成此操作的最简单方法:
vim +"argdo se bomb | se fileencoding=utf-8 | w" $(find . -type f -name *.php)
Run Code Online (Sandbox Code Playgroud)
或者更好的是,如果文件数量预计会非常大:
find . -type f -name *.php | xargs vim +"argdo se bomb | se fileencoding=utf-8 | w"
Run Code Online (Sandbox Code Playgroud)
Han*_*s W 16
您可以将命令放在一个文件中,让我们称之为script.vim:
set bomb
set fileencoding=utf-8
wq
Run Code Online (Sandbox Code Playgroud)
然后使用-S(source)选项调用Vim,以在要修复的文件上执行脚本.要在一堆文件上执行此操作,您可以执行此操作
find . -type f -name "*.php" -exec vim -S script.vim {} \;
Run Code Online (Sandbox Code Playgroud)
您也可以使用该+选项将Vim命令放在命令行上,但我认为它可能更像这样.
注意:我没有测试过这个.