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

如何在PowerShell中解决含法语字符的CSV文件编码问题?

解决PowerShell处理含法语字符CSV的编码问题

你的问题核心是原CSV的编码与PowerShell读取/保存时的编码不匹配,再加上Excel对无BOM UTF-8的兼容性差。之前用记事本转码有效,是因为记事本保存的UTF-8带BOM,而你原来的PowerShell命令没处理好这两点,所以没效果。

给你几个可行的PowerShell解决方法:

方法1:直接转换CSV编码(适配Excel和脚本)

如果原CSV是Windows默认的ANSI编码(法语系统通常对应Windows-1252),用以下命令转成带BOM的UTF-8(Excel能完美识别):

Windows PowerShell(旧版)

# 以系统默认ANSI编码读取,保存为带BOM的UTF-8
Get-Content C:\sdk\userExport.csv -Encoding Default | Set-Content -Encoding UTF8BOM c:\sdk\newuserExport.csv

# 用CSV专用命令更可靠(避免格式错乱)
Import-Csv C:\sdk\userExport.csv -Encoding Windows1252 | Export-Csv c:\sdk\newuserExport.csv -Encoding UTF8 -NoTypeInformation

PowerShell 7+(Core版)

# 指定源编码为Windows-1252读取,保存为带BOM的UTF-8
Get-Content C:\sdk\userExport.csv -Encoding Windows1252 | Set-Content -Encoding UTF8BOM c:\sdk\newuserExport.csv

# CSV专用命令
Import-Csv C:\sdk\userExport.csv -Encoding Windows1252 | Export-Csv c:\sdk\newuserExport.csv -Encoding UTF8BOM -NoTypeInformation

方法2:脚本内直接正确读取CSV(无需提前转文件)

如果不想提前转文件,在PowerShell脚本里读取CSV时指定正确的源编码,就能直接处理法语字符:

# 读取CSV时指定原编码为Windows-1252
$userList = Import-Csv C:\sdk\userExport.csv -Encoding Windows1252

# 后续处理$userList中的用户名,法语字符会正常显示和使用

为什么原来的命令没用?

  1. Get-Content未指定源编码:Windows PowerShell默认用系统ANSI编码读取,但如果读取时编码匹配错误,法语字符会在读取阶段就转成乱码,再保存UTF-8也无法恢复。
  2. Windows PowerShell中Set-Content -Encoding utf8生成的是无BOM的UTF-8,Excel对这种编码识别很差,而记事本保存的UTF-8是带BOM的,所以之前记事本操作有效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:33:29