是否有工具可以在windows上将UTF-8文件名批量转换回ISO-8859-1?
我从远程FTP服务器下载了多个子目录中的许多文件,问题是这些文件的文件名不是拉丁语,下载时带有奇怪的字符,如:ë、Ã、Ã、Ã和§ظظ…ط 有没有办法将这些文件名回滚到其原始名称?也许使用基于windows的批处理工具 谢谢 另外,我这样做只是为了能够将具有正确名称的文件上载到新服务器。使用php:是否有工具可以在windows上将UTF-8文件名批量转换回ISO-8859-1?,windows,unicode,character-encoding,filenames,Windows,Unicode,Character Encoding,Filenames,我从远程FTP服务器下载了多个子目录中的许多文件,问题是这些文件的文件名不是拉丁语,下载时带有奇怪的字符,如:ë、Ã、Ã、Ã和§ظظ…ط 有没有办法将这些文件名回滚到其原始名称?也许使用基于windows的批处理工具 谢谢 另外,我这样做只是为了能够将具有正确名称的文件上载到新服务器。使用php: foreach (glob("*.*") as $filename) { rename( $filename, mb_convert_encoding( $filename, "Window
foreach (glob("*.*") as $filename) {
rename( $filename, mb_convert_encoding( $filename, "Windows-1252", "UTF-8") );
}
使用php:
foreach (glob("*.*") as $filename) {
rename( $filename, mb_convert_encoding( $filename, "Windows-1252", "UTF-8") );
}
在PowerShell中:
Get-ChildItem | ForEach-Object {
$filename = Split-Path -Leaf $_
$new = [Text.Encoding]::Utf8.GetString([Text.Encoding]::Default.GetBytes($filename))
if ($_.Name -ne $new) {
Rename-Item $_ $new
}
}
可能有用。整个重命名项调用可能更容易完成,但如果不使用完整路径,我通常会遇到麻烦,因此我会小心出错。在PowerShell中:
Get-ChildItem | ForEach-Object {
$filename = Split-Path -Leaf $_
$new = [Text.Encoding]::Utf8.GetString([Text.Encoding]::Default.GetBytes($filename))
if ($_.Name -ne $new) {
Rename-Item $_ $new
}
}
可能有用。整个重命名项调用可能更容易完成,但我通常会在不使用完整路径时遇到麻烦,因此我犯了一个谨慎的错误。嘿,它几乎成功了,它抛出了这样一个警告:RenameØØØØØØØØØØØØØ.jpg,ØØØØ.jpg[function.Rename]:C:\xampp\htdocs\enc.php第3行中没有错误我计算了问号,它们是正确的字符数。你有什么建议吗?它显示了那个警告,但对实际文件没有做任何处理。@Ryan对其他文件有效还是对所有文件都给出了相同的错误?这有帮助吗:当我尝试使用:/Windows、PHP5.4时,它对我来说完美无瑕。5@Ryan如果可以,请更新到PHP5.4。它似乎是<5.3中的错误?你在使用5.2吗?在5.4.4上试用过,什么都不做,也不抛出错误嘿,它几乎成功了,它抛出了这样一个警告:重命名§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§:C:\xampp\htdocs\enc.php第3行中没有错误我计算了问号,它们是正确的字符数。你有什么建议吗?它显示了那个警告,但对实际文件没有做任何处理。@Ryan对其他文件有效还是对所有文件都给出了相同的错误?这有帮助吗:当我尝试使用:/Windows、PHP5.4时,它对我来说完美无瑕。5@Ryan如果可以,请更新到PHP5.4。它似乎是<5.3中的错误?您正在使用5.2吗?在5.4.4上尝试了它,没有执行任何操作,也没有引发错误。它说:方法调用失败,因为[System.Text.Encoding]不包含名为“Default”的方法。哦。现在修好了。但是,除了实际的编码转换之外,仍然没有测试。顺便问一下,这会在脚本所在的目录中查找文件吗?现在它显示:Join Path:无法将参数绑定到参数“Path”,因为它是空字符串。嗯,请现在再试一次。我讨厌做文件系统的事情,我经常注意到原因;它说:方法调用失败,因为[System.Text.Encoding]不包含名为“Default”的方法。Oops。现在修好了。但是,除了实际的编码转换之外,仍然没有测试。顺便问一下,这会在脚本所在的目录中查找文件吗?现在它显示:Join Path:无法将参数绑定到参数“Path”,因为它是空字符串。嗯,请现在再试一次。我讨厌做文件系统的事情,我经常注意到原因;