6

嗨,我有一个使用 windows 1252 字符集的 windows 项目,我需要将所有 .php 文件转换为 utf-8 字符集,因为我的数据库都是 utf-8 编码的。有没有办法使用linux命令或软件来做到这一点?

4

3 回答 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 回答