嗨,我有一个项目在windows谁使用Windows1252字符集,我需要转换我的所有.php文件到utf-8字符集,因为我的数据库都是utf-8编码。有没有办法使用linux命令或软件来做到这一点?
发布于 2013-05-22 05:56:58
在项目的根目录中,使用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-22 06:41:16
使用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')发布于 2018-06-29 18:04:42
我也遇到过类似的情况,但并不是所有的文件都采用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; donehttps://stackoverflow.com/questions/16680134
复制相似问题