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

PowerShell操作INI文件时如何阻止自动转为UTF-8编码?

解决PowerShell处理INI文件时自动转UTF-8的问题

你的问题出在Get-Content和Out-File的字符串处理流程上——即使指定了ASCII编码,PowerShell在将文件内容转为字符串再输出的过程中,可能会引入隐形的编码转换。要彻底保持ASCII编码,直接操作文件字节或修正管道处理逻辑是最可靠的方式:

方法1:字节级复制(完全无编码转换)

直接读取源文件的字节流并写入目标文件,绕过字符串解析环节,完全保留原始编码:

[System.IO.File]::WriteAllBytes("ascii_update.ini", [System.IO.File]::ReadAllBytes("./update.ini"))

方法2:修正管道处理的编码控制

如果一定要用管道操作,推荐用Set-Content替代Out-File,同时添加-Raw参数减少分段处理的编码偏差:

Get-Content -Path "./update.ini" -Encoding ascii -Raw | Set-Content -Path "ascii_update.ini" -Encoding ascii
  • -Raw参数会一次性读取整个文件为单个字符串,避免逐行处理时的编码异常
  • Set-Content相比Out-File,更适配纯文本文件的编码控制需求,不会额外插入格式字符

验证文件编码

处理完成后,可以用以下命令确认目标文件的编码是否为ASCII:

Get-ChildItem "ascii_update.ini" | Select-Object Name, @{Name='Encoding';Expression={[System.Text.Encoding]::GetEncoding($_.Encoding.CodePage)}}

内容的提问来源于stack exchange,提问作者Daniel Müller

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:54:25