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

PowerShell Get-Content读取货币符号异常,求正确编码方案

解决PowerShell处理含特殊货币符号文件的编码问题

问题场景

原CSV文件包含美元($)、英镑(£)、欧元(€)等货币符号,内容示例:

337;European €;NULL;
426;British £;NULL;
337;Americain $;NULL;

使用以下PowerShell命令替换"NULL"为空字符串:

(Get-Content %OutputFile%) -replace 'NULL', '' | Out-File -encoding unicode %OutputFile%

执行后出现乱码:美元符号正常,但英镑前出现多余字符,欧元符号显示异常,输出结果:

337;ODEYEUREU;hf;Odey European €;;
426;INFLECGB;hf;Inflection Point C £;;
337;ODEYEUREU;hf;Odey European $;;

解决方案

  • 问题根源:Get-Content 默认采用系统默认编码读取文件,无法正确解码非ASCII的欧元、英镑符号,导致乱码。美元符号属于ASCII字符,因此不受影响。
  • 正确编码选择:
    • 优先使用UTF-8编码:这是支持所有Unicode字符(包括各类货币符号)的通用编码,适配绝大多数场景。
    • 若原文件是无BOM的UTF-8,PowerShell 6及以上版本可使用 -Encoding utf8NoBOM;旧版PowerShell用 -Encoding UTF8 也能兼容大部分情况。
  • 修正后的命令:
    (Get-Content -Encoding UTF8 "%OutputFile%") -replace 'NULL', '' | Out-File -Encoding UTF8 "%OutputFile%"
    
    若担心文件占用问题,可拆分命令执行:
    $fileContent = Get-Content -Encoding UTF8 "%OutputFile%"
    $fileContent -replace 'NULL', '' | Out-File -Encoding UTF8 "%OutputFile%"
    
  • 注意事项:
    • 避免使用unicode(即UTF-16LE)作为输出编码,除非原文件本身是UTF-16格式,否则会引入额外字节标记,引发新的乱码。
    • 不确定原文件编码时,可通过Notepad++等工具查看文件编码类型,再对应指定-Encoding参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 05:25:39