- Excel 不会自动解释 UTF-8 格式的 CSV 文件,导致特殊字符显示错误。
- 有多种方法和工具可以正确导入 CSV 文件,从 Excel 中的文本向导到 Python 、VBA 和 PowerShell的.
- 使用脚本自动导入或使用专门的工具可确保多语言文件的数据完整性。
很多时候,数据工作者都会面临同样的问题:打开以 UTF-8 生成的 CSV 文件时,Excel 会错误地显示特殊字符。 这几乎是一个经典问题,尤其是在处理姓名、姓氏或包含重音字母、ñ、变音符号,甚至西里尔字母或希腊字母的多语言描述时。与其看到重音符号和 符号 正确的话,会出现奇怪的字符、问号或空白框,这会导致误解和数据呈现不佳。
此问题不仅影响高级用户或在技术环境中工作的用户,还影响需要导入或查看 来自以 UTF-8 格式导出 CSV 的应用程序、Web 平台或管理系统的数据。 主要问题是,Excel 默认不解释 CSV 文件中的 UTF-8 编码,除非在非常特殊的情况下。虽然这看起来是个小问题, 强制 正确的编码对于避免混淆和确保信息的完整性至关重要。
问题的根源:为什么Excel不能正确解释UTF-8 CSV文件?
Excel,尤其是在其早期版本中,会自动使用操作系统的区域设置来确定编码 当我们通过双击或选择“文件 > 打开”打开 CSV 文件时。这意味着,除非区域设置设置为 UTF-8(这在系统中并不常见)。 Windows),ASCII 范围之外的字符可能会显示不正确。
错误的主要原因是 CSV 格式虽然简单且通用,但没有携带有关其编码的信息。。因此,虽然其他应用程序,如 Google Sheets 假定采用 UTF-8,Excel 假定采用本地编码,例如 ANSI、Windows-1252 或 ISO-8859,这会导致波浪号、eñes 和其他特殊字符出现问题。
在 Excel 中以 UTF-8 格式打开 CSV 的实用解决方案
有几种方法可以让你强制从 Excel 正确解释 UTF-8 格式的 CSV 文件。 无需借助外部解决方案或手动编辑文件。以下是经过用户和专家测试的最实用的选项。
使用 Excel 的文本导入向导以 UTF-8 格式打开 CSV 文件
Excel 提供的最易访问的选项是文本导入向导,它允许您在打开文件时手动指定编码。
- 打开 Excel 并选择一张空白表。
- 转到“数据”选项卡,然后单击“从文本/CSV 获取数据”或“从文本获取数据” 根据您的版本。
- 导航到 CSV 文件并选择它。
- 在出现的窗口中,查找选择编码的选项(在现代版本中它通常显示为“文件源”)。 这里选择“65001: Unicode (UTF-8)”。
- 接受之前,请检查预览以确保特殊字符正确显示。
这种方法可以防止出现奇怪的字符 并允许直接轻松地导入,确保正确显示重音符号、eñes 和其他符号。
使用 Power Query 导入 UTF-8 格式的 CSV 文件
微软本身认可的另一个有效技术是使用 Power Query,这是自 2016 版起集成到 Excel 中的工具,在以前的版本中可作为免费插件使用。
- 在 Excel 中,转到“数据”选项卡并选择“获取和转换数据”。.
- 选择“从文件获取数据”>“从文本/CSV”。
- 选择文件,如有必要,将高级选项中的编码调整为 UTF-8。
- 单击“上传”即可将内容导入新工作表,无需任何编码问题。
Power Query 还可以轻松地在将数据转储到工作簿之前清理和转换数据。,当文件来自异构来源或包含非标准化信息时,此功能特别有用。
如果无法在 Excel 中直接保存为 UTF-8 CSV,则解决方案
用户报告的限制之一是,根据版本和操作系统的不同,Excel 并不总是允许直接以 UTF-8 格式保存 CSV 文件。在这种情况下,可以使用系统特定的工具来转换文件。
使用 Windows 记事本强制使用 UTF-8 编码
- 在 Excel 中打开原始 CSV 文件并选择“另存为”类型“Unicode 文本 (*.txt)”.
- 在记事本中打开生成的 .txt 文件.
- 您将看到数据由制表符分隔。。使用“替换”功能(Ctrl+H)将所有制表符更改为逗号。
- 在“文件 > 另存为”中输入扩展名为.csv的名称,并在编码类型下拉菜单中选择UTF-8编码。.
- 保存文件并使用导入向导或 Power Query 通过 Excel 打开它,如上所述。.
如果您的 Excel 在保存时不提供“CSV UTF-8(逗号分隔)”选项,则此方法很有用,而且它速度很快,不需要额外的应用程序。。但是,避免在 Excel 中修改生成的 CSV 文件,因为它可能会再次丢失 UTF-8 编码。
高级解决方案:自动化 UTF-8 CSV 转换和导入
如果您管理大量 CSV 文件或想要自动化整个过程以避免人为错误,则可以通过脚本和宏进行多种选择。。对于技术人员和需要提高工作流程效率的人来说,这些替代方案是理想的。
使用 Python 和 Pandas 将 CSV 转换为 Excel
Python 与 Pandas 库一起,是操作数据并确保从 CSV UTF-8 正确转换为 Excel 的最强大、最灵活的方法之一。:
import pandas as pd
# Leer archivo CSV con codificación UTF-8
df = pd.read_csv('archivo.csv', encoding='utf-8')
# Guardar como archivo Excel conservando todos los caracteres
df.to_excel('archivo.xlsx', index=False)
这样可以确保所有列和字符保持完整。 转换为 Excel 格式时。此外,自动化功能还允许您管理多个文件或将它们集成到更大的流程中。
在 Excel 中使用 VBA 宏导入 UTF-8 CSV
Excel 允许您在 Visual Basic for Applications (VBA) 中创建宏,以便在尊重编码的同时自动执行导入过程。一个简单的例子是:
Sub ImportCSV()
Dim ws As Worksheet
Dim filePath As String
filePath = "C:\ruta\a\tu\archivo.csv"
Set ws = ThisWorkbook.Sheets("Hoja1")
With ws.QueryTables.Add(Connection:="TEXT;" & filePath, Destination:=ws.Range("A1"))
.TextFilePlatform = 65001 'UTF-8
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileCommaDelimiter = True
.TextFileColumnDataTypes = Array(1)
.Refresh BackgroundQuery:=False
End With
End Sub
这使您可以定义编码、分隔符并将清理的内容直接放入电子表格中。.
在 Windows 上使用 PowerShell 实现自动化
对于需要使用脚本处理和转换文件的 Windows 用户来说,PowerShell 是另一个非常方便的工具。序列的示例可以是:
$csvPath = "C:\ruta\a\archivo.csv"
$excelPath = "C:\ruta\a\archivo.xlsx"
$csv = Import-Csv -Path $csvPath -Delimiter ','
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false
$workbook = $excel.Workbooks.Add()
$worksheet = $workbook.Worksheets.Item(1)
$row = 1
$csv | ForEach-Object {
$col = 1
$_.PSObject.Properties | ForEach-Object {
$worksheet.Cells.Item($row, $col) = $_.Value
$col++
}
$row++
}
$workbook.SaveAs($excelPath)
$workbook.Close()
$excel.Quit()
这对于自动批处理文件或将其集成到管理任务中非常有用。.
使用外部工具和在线转换器转换 CSV UTF-8
如果您不想处理脚本或宏,可以使用第三方工具和在线转换器轻松地将 UTF-8 CSV 转换为与 Excel 兼容的格式。一些示例包括“Excel CSV Importer”等应用程序或 Web 服务,例如 转换csv.com,它允许您上传文件、选择编码并下载可在 Excel 中打开的结果。
这些工具通常具有简单的可视化界面,并允许您调整分隔符、文本格式和编码等参数。对于那些需要快速解决方案且无需高级技术知识的用户来说,它们无疑是理想之选。此外,如果您有数十或数百个文件,有些软件还支持批量处理,从而节省时间。
对字节世界和一般技术充满热情的作家。我喜欢通过写作分享我的知识,这就是我在这个博客中要做的,向您展示有关小工具、软件、硬件、技术趋势等的所有最有趣的事情。我的目标是帮助您以简单而有趣的方式畅游数字世界。