首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将整个项目的字符集转换为utf-8

将整个项目的字符集转换为utf-8
EN

Stack Overflow用户
提问于 2013-05-22 05:53:18
回答 3查看 4.1K关注 0票数 6

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-22 05:56:58

在项目的根目录中,使用find(1)列出所有*.php文件,并将其与recode(1)结合使用以就地转换这些文件:

代码语言:javascript
运行
复制
find . -type f -name '*.php' -exec recode windows1252..utf8 \{} \;

作为recode(1)的替代方法,您还可以使用iconv(1)进行转换(用于上面的find命令:iconv -f windows-1252 -t utf-8 -o \{} \{})。

您需要安装recode或iconv才能运行上面的程序。在大多数现代系统上,都可以通过包管理器轻松安装。

票数 11
EN

Stack Overflow用户

发布于 2013-05-22 06:41:16

使用Python转换单个文件(因为我被要求...)

代码语言:javascript
运行
复制
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编码为字符串,而无需将其写入文件:

代码语言:javascript
运行
复制
utf8_line = line.encode('utf-8')
票数 1
EN

Stack Overflow用户

发布于 2018-06-29 18:04:42

我也遇到过类似的情况,但并不是所有的文件都采用ISO-8859编码。有些是用ASCII或UTF-8编码的。使用一个空的find ... -exec iconv ...搞砸了我的git repo,我不得不重新克隆它。

下面是我用来避免错误转换的方法:

代码语言:javascript
运行
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16680134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档