I have a PHP application who's files encoding is Greek ISO (iso-8859-7). I want to convert the files to utf-8 but simply saving the files with utf-8 isn't enough since the Greek texts get garbled. Is there an "automatic" method to do this so that I can completely convert my app's encoding without having to go through each file and rewrite the texts?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
On a Linux system, if you are sure all files are currently encoded in ISO-8859-7, you can do this:
bash> find /your/path -name "*.php" -type f \ -exec iconv "{}" -f ISO88597 -t UTF8 -o "{}.tmp" \; \ -exec mv "{}.tmp" "{}" \;
This converts all PHP script files located in /your/path
as well as all sub-directories. Remove -name "*.php"
to convert all files.
Since you are under Windows, the easiest option would be a PHP script like this:
<?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)) ); }
回答2:
<?php function writeUTF8File($filename,$content) { $f=fopen($filename,"w"); # Now UTF-8 - Add byte order mark fwrite($f, pack("CCC",0xef,0xbb,0xbf)); fwrite($f,$content); fclose($f); } ?>
回答3:
Try the iconv function
$new_string = iconv("ISO-8859-7", "UTF-8", $old_string);
回答4:
The following code should work for you, it's a PowerShell script, you can Start > Run > powershell
and paste code after modifying required lines.
$sourcepath = "d:\temp\old\" $targetpath = "d:\temp\new\" foreach ($file in Get-ChildItem $sourcepath -Filter *.php -Recurse) { $content = [System.IO.File]::ReadAllBytes($sourcepath + $file) $str = [System.Text.Encoding]::GetEncoding("ISO-8859-7").GetString($content) # $str = $str.Replace("ISO-8859-7", "UTF-8") [System.IO.File]::WriteAllText($targetpath + $file, $str) }
You may remove #
char on line 6 to make some replacements before saving.
文章来源: Convert files encoding