嗨,我有一个使用 windows 1252 字符集的 windows 项目,我需要将所有 .php 文件转换为 utf-8 字符集,因为我的数据库都是 utf-8 编码的。有没有办法使用linux命令或软件来做到这一点?
问问题
4144 次
3 回答
11
在项目的根目录中,使用find(1)列出所有*.php
文件并将其与recode(1)组合以将这些文件转换到位:
find . -type f -name '*.php' -exec recode windows1252..utf8 \{} \;
作为 recode(1) 的替代方法,您还可以使用iconv(1)进行转换(用于上述find
命令:)iconv -f windows-1252 -t utf-8 -o \{} \{}
。
您需要安装 recode 或 iconv 才能使上述功能正常工作。两者都应该可以通过大多数现代系统上的包管理器轻松安装。
于 2013-05-21T21:56:57.550 回答
1
使用 Python 转换单个文件(因为有人问我......)
import codecs
with codecs.open(filename_in, 'r', 'windows-1252') as fin:
with codecs.open(filename_out, 'w', 'utf-8') as fout:
for line in fin:
fout.write(line)
也可以直接将 utf-8 编码为字符串而不将其写入文件:
utf8_line = line.encode('utf-8')
于 2013-05-21T22:41:15.757 回答
1
我有一个类似的情况,但所有文件都没有以 ISO-8859 编码。有些是用 ASCII 或 UTF-8 编码的。使用一个裸机find ... -exec iconv ...
搞砸了我的 git repo,我不得不重新克隆它。
这是我用来避免错误转换的方法:
for f in $(find . -type f); do file $f | grep -q ISO-8859 && iconv -f ISO-8859-1 -t UTF-8 -o $f $f; done
于 2018-06-29T10:04:42.397 回答