Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有工具可以在windows上将UTF-8文件名批量转换回ISO-8859-1?_Windows_Unicode_Character Encoding_Filenames - Fatal编程技术网

是否有工具可以在windows上将UTF-8文件名批量转换回ISO-8859-1?

是否有工具可以在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

我从远程FTP服务器下载了多个子目录中的许多文件,问题是这些文件的文件名不是拉丁语,下载时带有奇怪的字符,如:ë、Ã、Ã、Ã和§ظظ…ط

有没有办法将这些文件名回滚到其原始名称?也许使用基于windows的批处理工具

谢谢

另外,我这样做只是为了能够将具有正确名称的文件上载到新服务器。

使用php:

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”,因为它是空字符串。嗯,请现在再试一次。我讨厌做文件系统的事情,我经常注意到原因;