转换文件编码

bik*_*y77 3 php encoding utf-8 character-encoding file-encodings

我有一个PHP应用程序,其文件编码为希腊ISO(iso-8859-7)。我想将文件转换为utf-8,但仅用utf-8保存文件是不够的,因为希腊文本会出现乱码。是否有一种“自动”方法来执行此操作,以便我可以完全转换应用程序的编码,而不必遍历每个文件并重写文本?

Ran*_*eed 5

在Linux系统上,如果确定当前所有文件都已按照ISO-8859-7编码,则可以执行以下操作:

bash> find /your/path -name "*.php" -type f \
    -exec iconv "{}" -f ISO88597 -t UTF8 -o "{}.tmp" \; \
    -exec mv "{}.tmp" "{}" \;
Run Code Online (Sandbox Code Playgroud)

这将转换位于/your/path所有子目录中的所有PHP脚本文件。删除-name "*.php"以转换所有文件。


由于您使用的是Windows,因此最简单的选择是这样的PHP脚本:

<?php
$path = realpath('C:\\your\\path');

$iterator = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($path), 
    RecursiveIteratorIterator::SELF_FIRST
);

foreach($iterator as $fileName => $file){
    if($file->isFile())
        file_put_contents(
            $fileName,
            iconv('ISO-8859-7', 'UTF-8', file_get_contents($fileName))
        );
}
Run Code Online (Sandbox Code Playgroud)