You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:使用PowerShell修改文件内容后出现特殊字符

解决PowerShell修改XML文件后出现乱码的问题

你的脚本执行后出现乱码(������),核心原因是文件编码不匹配:Get-Content和Set-Content默认使用系统ANSI编码读写,但XML文件通常采用UTF-8编码(带BOM或不带),读写编码不一致就会导致乱码。

修正后的脚本

$configFiles = Get-ChildItem -Include *.xml -Recurse
$oldString = "AppointmentRequest"
$newString = "ShiftRequest"

foreach ($file in $configFiles) {
    # 指定UTF-8编码检查文件是否包含目标字符串,避免编码问题导致误判
    if (Select-String -Path $file.PSPath -Pattern $oldString -Encoding utf8) {
        # 统一用UTF-8编码完成读取、替换、写入流程
        (Get-Content -Path $file.PSPath -Encoding utf8) |
            Foreach-Object { $_ -replace $oldString, $newString } |
            Set-Content -Path $file.PSPath -Encoding utf8
    }
}

关键改动说明

  • 给Get-Content和Set-Content添加-Encoding utf8参数,强制使用UTF-8编码读写,匹配XML文件的常用编码标准。
  • 给Select-String也加上-Encoding utf8,避免因编码差异漏判文件是否包含目标字符串。
  • 优化变量命名($oldString/$newString),提升脚本可读性。

如果你的XML是UTF-8不带BOM格式,PowerShell 5.1及以上版本可替换为-Encoding utf8NoBOM,确保写入后保持无BOM格式;若文件是其他编码(如UTF-16),对应替换为utf16即可。

内容的提问来源于stack exchange,提问作者Alexander Samuel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 08:17:11