我有一个PHP应用程序的文件编码是希腊ISO(iso-8859-7)。我想将这些文件转换为utf-8,但仅仅使用utf-8保存这些文件是不够的,因为希腊文文本被乱码。有没有一个“自动”方法来做到这一点,以便我可以完全转换我的应用程序的编码,而不必通过每个文件并重写文本?转换文件编码
Q
转换文件编码
2
A
回答
4
在Linux系统上,如果你是确保所有文件都目前在ISO-8859-7编码,你可以这样做:
bash> find /your/path -name "*.php" -type f \
-exec iconv "{}" -f ISO88597 -t UTF8 -o "{}.tmp" \; \
-exec mv "{}.tmp" "{}" \;
将其转换所有位于/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))
);
}
0
尝试iconv功能
$new_string = iconv("ISO-8859-7", "UTF-8", $old_string);
1
<?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);
}
?>
0
下面的代码应该为你工作,这是一个PowerShell脚本,你可以Start > Run > powershell
并在修改所需的行后粘贴代码。
$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)
}
您可以删除#
char 6行,在保存前进行一些替换。
相关问题
- 1. 转换cs文件编码
- 2. Java文件编码转换
- 3. PHP文件名编码转换问题
- 4. 转换许多文件的编码?
- 5. 大文件的编码转换
- 6. 转换git存储库文件编码
- 7. 转换编码
- 8. 将.txt文件转换为.xml文件时编码问题
- 9. c#编码转换?
- 10. 编码转换PHP
- 11. 编码不转换
- 12. C#编码转换
- 13. 转换编码,XSLT
- 14. python编码转换
- 15. Eclipse编码转换
- 16. NSString编码转换
- 17. SOAP RPC /编码转换为RPC /文字
- 18. 视频编码转换编码在c#
- 19. 如何将保存的文本文件编码转换为UTF8?
- 20. 忽略file_get_contents的源文件类型编码和/或转换为json编码
- 21. iconv编码转换问题
- 22. 转换ASCII到UTF8编码
- 23. Ruby和编码转换
- 24. Base64编码转换问题
- 25. 编码转换工具
- 26. ICU C++转换编码
- 27. 转换编码格式
- 28. Base64编码转换为XSLX
- 29. 转换编码函数Python35
- 30. 避免转换TIdText编码
不幸的是我在一个Windows系统上。我可以使用Cygwin吗? – bikey77
是的,你可以。但是上面的PHP代码片段应该可以完成这项工作吗? – RandomSeed