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

PowerShell将UTF-8 CSV转UTF-16时部分字符编码异常求助

UTF-8转UTF-16编码时字符异常的原因及解决方法

问题原因

你使用Get-Content读取UTF-8文件时,PowerShell默认会采用当前系统的ANSI编码解析文件(除非UTF-8文件带有BOM)。这种默认行为会导致原本正确的UTF-8字符被错误解码,后续通过Set-Content转存为UTF-16时,错误的解码结果就被保留下来,出现Meriç变成Meriç的乱码。而Z�rcher本身是UTF-8字符被错误显示的结果,用ANSI解析时恰好“修正”为正确的Zürcher,这只是巧合。

解决方法

方法1:明确指定读取编码为UTF-8

修改代码,在Get-Content中添加-Encoding UTF8参数,强制以UTF-8编码读取文件,避免系统默认编码干扰:

Get-Content -Path "C:\tmp\PSProjekt\schueler.csv" -Encoding UTF8 | Set-Content -Path "C:\tmp\PSProjekt\lol\schueler.csv" -Encoding Unicode -Force

方法2:使用.NET类直接读写(更高效可靠)

跳过PowerShell的文本解析层,直接用System.IO.File类处理编码转换,避免中间环节的编码错误:

# 读取UTF-8内容
$utf8Text = [System.IO.File]::ReadAllText("C:\tmp\PSProjekt\schueler.csv", [System.Text.Encoding]::UTF8)
# 写入为UTF-16(Unicode)编码
[System.IO.File]::WriteAllText("C:\tmp\PSProjekt\lol\schueler.csv", $utf8Text, [System.Text.Encoding]::Unicode)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 08:14:53