重命名文件时不能使用希伯来语字符

Hebrew characters can't be used when renaming files

我正在尝试使用以下代码:

ls *.xml | Foreach {$i=1} {
  $nonParsedXML =  $_
  [xml]$parsedXML = Get-Content $nonParsedXML -Encoding utf8
  $title = $parsedXML.title
  $nonParsedXMLwithExtension = "$($title).xml"
  Rename-Item $nonParsedXML -NewName $nonParsedXMLwithExtension
}

代码尝试重命名文件,新名称是文件中标签的内容。当标签的内容是英文时它可以工作,但是当内容是希伯来语时它不能正常工作 - 代码正在重命名文件,但我看到的不是希伯来字符而是块字符。

如果您想知道,问题发生在我使用 PowerShell ISE 时。 当我在命令提示符下使用 PowerShell 时,代码不能是 运行 因为它根本无法处理希伯来语字符并产生错误。

你能澄清一下这个问题吗?有解决办法吗?

好像是默认文件字符集,尝试将其更改为扩展字符集。

http://answers.microsoft.com/en-us/windows/forum/windows_7-windows_programs/default-utf-8-encoding-for-new-notepad-documents/525f0ae7-121e-4eac-a6c2-cfe6b498712c

希望本文对您有所帮助

一位非常友善且乐于助人的人为我提供了解决方案。这是:


dir -Path C:\Temp\Test -Filter *.xml | ForEach-Object {
  $xml = [xml](Get-Content -Path $_.FullName -Encoding UTF8)
  Rename-Item -Path $_.FullName -NewName "$($xml.title).xml"
}