You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何永久设置Office 365 Excel(Win10系统)的字符集以正确显示带重音字符的CSV文件?

如何永久设置Office 365 Excel(Win10系统)的字符集以正确显示带重音字符的CSV文件?

首先得说清楚为啥会出现这个问题:你的CSV是UTF-8编码的,但Excel默认打开CSV时用的是系统默认的区域编码(比如Windows-1252,或者中文系统的GBK),编码不匹配就导致重音字符变成乱码(像é变成Ãé这种)。可惜Excel本身没有直接的全局开关让它默认用UTF-8打开CSV,但有几个变通的永久解决办法,我给你梳理一下:

方法一:修改系统区域设置,全局启用UTF-8

这个方法能让整个系统(包括Excel)默认优先用UTF-8编码,一劳永逸:

  • 打开Win10的「设置」→「时间和语言」→「语言」,拉到最下面点击「管理语言设置」
  • 在弹出的「区域」窗口切换到「管理」标签页,点击「更改系统区域设置」
  • 勾选「Beta版:使用Unicode UTF-8提供全球语言支持」,然后点击确定
  • 重启电脑生效

⚠️ 注意:这个设置可能会影响一些老程序的兼容性(比如某些不支持UTF-8的旧软件),但Win10/Office 365的环境下大部分主流软件都没问题,你可以先试试,要是有问题再改回来。

方法二:创建预设UTF-8导入的Excel模板

如果不想改系统设置,可以做一个模板,每次用模板打开CSV:

  • 打开Excel新建空白工作簿,点击「数据」选项卡→「自文本/CSV」,选中你的UTF-8 CSV文件
  • 在导入预览窗口,点击「文件来源」的下拉框,选择「UTF-8」,然后调整好列分隔符(一般是逗号),完成导入并调整好列格式
  • 把这个工作簿另存为「Excel模板(.xltx)」格式
  • 以后每次要打开新生成的CSV,就打开这个模板,点击「数据」选项卡的「全部刷新」,或者修改模板里的数据源指向最新的CSV文件路径,就能自动用UTF-8编码导入了

方法三:用VBA宏一键导入UTF-8 CSV

如果经常要打开这类文件,写个宏会更方便:

  • 打开Excel,按Alt+F11打开VBA编辑器
  • 右键点击左侧的工作簿名称,选择「插入」→「模块」,粘贴下面的代码:
Sub OpenUTF8CSV()
    Dim filePath As String
    ' 弹出文件选择框,选择要打开的CSV
    filePath = Application.GetOpenFilename("CSV Files (*.csv), *.csv")
    If filePath = "False" Then Exit Sub
    
    ' 以UTF-8编码导入CSV到当前工作表
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & filePath, Destination:=Range("A1"))
        .TextFilePlatform = 65001 ' 65001是UTF-8的编码代码
        .TextFileParseType = xlDelimited
        .TextFileCommaDelimiter = True ' 如果你的CSV是其他分隔符,比如制表符,改成.TextFileTabDelimiter = True
        .Refresh
    End With
End Sub
  • 保存工作簿为「启用宏的工作簿(.xlsm)」格式
  • 你还可以把这个宏添加到Excel的快速访问工具栏:点击快速访问工具栏的下拉箭头→「更多命令」,选择「宏」,把OpenUTF8CSV添加进去,以后点一下按钮就能选择CSV并自动用UTF-8导入了

另外补充个小细节:如果你的CSV文件是不带BOM的UTF-8,有些时候Excel还是识别不了,这种情况可以调整自动生成CSV的脚本,让它生成带UTF-8 BOM的文件(比如Python里用encoding='utf-8-sig'保存CSV,其他语言也有对应的设置),这样Excel打开时会自动识别UTF-8编码,甚至不用上面的设置。

备注:内容来源于stack exchange,提问作者dr_

火山引擎 最新活动