如何将带有中文字符的 Excel 文件导出为 CSV?
Posted
技术标签:
【中文标题】如何将带有中文字符的 Excel 文件导出为 CSV?【英文标题】:How do I export an Excel file with Chinese characters to a CSV? 【发布时间】:2011-10-21 08:34:36 【问题描述】:我有一个 Excel 文档,其中包含一个包含中文字符的数据表。我正在尝试将此 Excel 电子表格导出为 CSV 文件以导入 mysql 数据库。
但是,当我将 Excel 文档保存为 CSV 文件时,记事本将生成的 CSV 文件的中文字符显示为问号。导入MySQL会保留问号,完全忽略原来的汉字是什么。
我怀疑这可能与使用带有 UTF-8 编码的 Excel 有关。感谢您的帮助!
【问题讨论】:
记事本是假的。你试过用真正的文本编辑器打开它吗?比如notepad++或者ultraeditor。 谢谢黄。我试过 Notepad++,然后是 jEdit,它们都支持 UTF-8。问号还没有变成汉字。因此,我认为 Excel 在将电子表格导入 CSV 格式时只是简单地把汉字弄脏了。我仍在寻找解决方案。 【参考方案1】:以下方法已经过测试并用于在 MongoDB 中导入 CSV 文件,所以应该可以:
在 Excel 工作表中,转到文件 > 另存为。
为文件命名并从“保存类型”旁边的下拉列表中选择 Unicode 文本 (*.txt),然后单击“保存”。
使用您喜欢的文本编辑器(例如记事本)打开 unicode .txt 文件。
由于我们的 unicode 文本文件是制表符分隔文件,并且我们想将 Excel 转换为 CSV(逗号分隔)文件,因此我们需要将所有制表符替换为逗号。
选择一个制表符,右键单击它并从上下文菜单中选择复制,或者直接按 CTRL+C,如下面的屏幕截图所示。
按 CTRL+H 打开“替换”对话框并将复制的选项卡 (CTRL+V) 粘贴到“查找内容”字段中。执行此操作时,光标将向右移动,指示已粘贴选项卡。在替换为字段中键入逗号,然后单击全部替换。
单击文件 > 另存为,输入文件名并将编码更改为 UTF-8。然后点击保存按钮。
直接在记事本的另存为对话框中将 .txt 扩展名更改为 .csv,然后选择保存类型旁边的所有文件 (.),如下面的屏幕截图所示。
通过单击文件 > 打开 > 文本文件(.prn、.txt、.csv)从 Excel 打开 CSV 文件并验证数据是否正常。
来源here
【讨论】:
【参考方案2】:据我所知,Excel 不会以任何 Unicode 编码保存 CSV 文件。我最近尝试将文件导出为带有 £ 符号的 CSV 时遇到了类似的问题。我受益于能够完全使用其他工具。
我的 Excel 2010 版本可以以 Unicode 格式 File > Save As > Unicode Text (.txt)
导出,但输出是制表符分隔的 UCS-2 编码文件。我根本不了解 MySQL,但简要了解一下规范,它似乎可以处理制表符分隔的导入和 UCS-2。可能值得尝试此输出。
编辑:此外,您始终可以在 Notepad++ 中打开此 Unicode 输出,将其转换为 UTF-8 Encoding > Convert to UTF-8 without BOM
并可能也将所有制表符替换为逗号(在扩展搜索模式下使用替换对话框,在查找中使用 \t
框和替换框中的,
。)
【讨论】:
【参考方案3】:你可能想试试notepad++,我怀疑notepad会支持unicode字符。
http://notepad-plus-plus.org/
【讨论】:
如果文件以被识别为字节顺序标记的东西开头,记事本支持 unicode 字符,这在 UTF-8 中确实很丑陋(特别是考虑到 UTF-8 不需要它 首先)。 您好,如上所述,我尝试过 Notepad++ 和 jEdit,它们都支持 UTF-8。同样,问号仍然没有变成汉字。因此,我认为 Excel 在将电子表格导入 CSV 格式时只是简单地把汉字弄脏了。我仍在寻找解决方案。 Excel 不会导出为 UTF-8 格式的 CSV。它仅支持“Unicode 文本”格式的 UTF-8。【参考方案4】:对于某些人来说,此解决方案可能有效:https://support.geekseller.com/knowledgebase/utf-8/
保存 csv 时,转到右下角工具 > Web 选项 > 编码 > Unicode (UTF-8)
或者这个 SO 答案:只需使用 Google 表格将 csv 保存为 unicode: Excel to CSV with UTF8 encoding
【讨论】:
谢谢,这与当前的 Office 365 版本的 excel 完美配合!【参考方案5】:我的数据上面的方法都试过了,但是我的数据不太好用(简体中文,超过700Mb。我试过windows中英文系统,英文和中文excel。windows excel好像不能保存到utf8,即使它声称这样做。我在另存为中指定了uft8 csv,但是当我使用“打开表”来检测编码方法时。它不是uft8,也不是GB *。 这是我的最终解决方案。
(1) 下载“打开工作表”。
(2) 正确打开。您可以滚动编码方法,直到看到预览窗口中显示的汉字。
(3) 将其保存为 utf-8(如果需要 utf-8)。
PS:您需要弄清楚系统中的默认编码。目前 据我所知,Ubuntu 处理 UTF8 很好。但是windows默认 简体中文是以GB**开头的。即使你编码为utf8, 不过,您也可以正确打开它。就我而言, r 不能 打开我的 utf-8 csv,但可以打开 GB* 编码。
即使您的文件非常大,这种方法也能很好地工作。 其他一些解决方法是谷歌表(但文件大小可能受到限制)。 Notepad++ 也适用于较小的文件。
有一种方法可以检测编码方式,方法是打开文件并滚动浏览编码方式,直到看到正确显示的中文。
【讨论】:
【参考方案6】:你应该保存 csv 文件:
df.to_csv(file_name, encoding = 'utf_8_sig')
代替:
df.to_csv(file_name, encoding = 'utf-8')
【讨论】:
以上是关于如何将带有中文字符的 Excel 文件导出为 CSV?的主要内容,如果未能解决你的问题,请参考以下文章
如何在asp.net中实现将sqlserver数据库表的数据导入到excel中,希望在代码中生成Excel表并带有中文表头?