【问题标题】:Power shell replace character ŽPowershell 替换字符 Ž
【发布时间】:2017-06-07 23:48:48
【问题描述】:

我有一个 power shell 脚本,它基本上替换特定文件夹下所有文件中的特定字符,例如 (TM) --> '™'。

脚本完美运行。但是当我尝试将 avŽ 替换为 avé 时,它不起作用。如果我尝试用 ac 替换 av ,它会起作用。所以我假设替换不适用于 grapheme Ž 字符。如果您能对此提供一些想法,那就太好了。下面是替换字符的示例代码:

$old = 'PavŽ'
$new = 'Pavé 
$InputFiles = Get-Item "C:\..\..\*.txt"   
Get-Item $InputFiles | ForEach {
        (Get-Content -Path $_.FullName).Replace($old,$new) | Set-Content -Path $_.FullName
    } 

提前致谢。

【问题讨论】:

    标签: powershell powershell-2.0 powershell-3.0


    【解决方案1】:

    Powershell 可以很好地替换任何字符。但可能还有其他一些问题:

    • 文件的编码可能是问题所在。 (最有可能的)。 如果您的文件是使用不包含特定内容的代码页编码的 字符,这些字符不会被保存。 您可能需要考虑以 可以 的格式保存文件,例如UTF-8。
    • 您可能没有对某些文件的写入权限。

    在我的小测试中,替换效果很好。我使用记事本创建了一个包含“PavŽ”的文件,以及另一个包含“Pavé”的文件。

    您的几行 powershell 来回替换了所有内容(并用 $old 和 $new 切换)就好了。

    【讨论】:

    • 谢谢,@realbart....第二点应该不是问题,因为它可以替换其他章程...可能是我的文件编码有问题。
    • 我认为你的答案是正确的。文件在 Mac 机器中编码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-07
    • 2013-12-08
    • 1970-01-01
    • 1970-01-01
    • 2014-09-20
    • 2010-10-07
    相关资源
    最近更新 更多