重命名文件时无法使用希伯来字符

时间:2015-03-24 07:58:06

标签: powershell character-encoding

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

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时,代码无法运行,因为它根本无法处理希伯来语字符并产生错误。

您能否澄清一下这个问题?有解决方案吗?

2 个答案:

答案 0 :(得分:1)

它似乎是默认文件字符集,尝试将其更改为扩展字符集。

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

我希望本文能为您提供帮助。

答案 1 :(得分:0)

一个非常友好和乐于助人的人给了我解决方案。这是:

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"
}