如何将包含中文字符的Excel文件导出为CSV?

时间:2011-08-06 05:40:52

标签: excel utf-8

我的Excel文档包含一个包含中文字符的数据表。我正在尝试将此Excel电子表格导出为CSV文件,以便导入MySQL数据库。

但是,当我将Excel文档另存为CSV文件时,记事本会将生成的CSV文件的中文字符显示为问号。导入MySQL会保留问号,完全忽略原始汉字的内容。

我怀疑这可能与使用带有UTF-8编码的Excel有关。谢谢你的帮助!

6 个答案:

答案 0 :(得分:9)

据我所知,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并可能用逗号替换所有选项卡字符(在扩展搜索模式下使用替换对话框,{{1} }在“查找”框中和“替换”框中的\t。)

答案 1 :(得分:7)

以下方法已经过测试并用于在MongoDB中导入CSV文件,因此它应该可以工作:

  1. 在Excel工作表中,转到文件>另存为。

  2. 命名文件并从“另存为类型”旁边的下拉列表中选择Unicode文本(* .txt),然后单击“保存”。

  3. 使用首选的文本编辑器打开unicode .txt文件,例如记事本。

  4. 由于我们的unicode文本文件是制表符分隔文件,我们想将Excel转换为CSV(逗号分隔)文件,我们需要用逗号替换所有制表符。

  5. 选择一个标签字符,右键单击它并从上下文菜单中选择复制,或者只需按下CTRL + C,如下面的屏幕截图所示。

  6. 按CTRL + H打开“替换”对话框,然后将复制的选项卡(CTRL + V)粘贴到“查找内容”字段中。执行此操作时,光标将向右移动,表示已粘贴选项卡。在替换为字段中键入逗号,然后单击全部替换。

  7. 点击文件>另存为,输入文件名并将编码更改为UTF-8。然后单击“保存”按钮。

  8. 直接在记事本的另存为对话框中将.txt扩展名更改为.csv,然后选择保存类型旁边的所有文件(),如下面的屏幕截图所示。

  9. 单击文件>从Excel打开CSV文件;打开>文本文件(.prn,.txt,.csv)并验证数据是否正常。

  10. 来源here

答案 2 :(得分:3)

您可能想尝试记事本++,我怀疑记事本会支持unicode字符。

http://notepad-plus-plus.org/

答案 3 :(得分:1)

对于某些人来说,此解决方案可能有效:https://support.geekseller.com/knowledgebase/utf-8/

保存 csv 时,转到右下角的工具 > Web 选项 > 编码 > Unicode (UTF-8)

或者这个 SO 答案:只需使用 Google Sheets 将 csv 保存为 unicode: Excel to CSV with UTF8 encoding

答案 4 :(得分:0)

我已经为我的数据尝试了所有上述方法,但它对我的数据不太适用(简体中文,超过700Mb。我尝试过Windows中文和英文系统,英文和中文优秀.Windows excel似乎无法保存甚至它声称这样做。我指定uft8 csv保存为,但是当我使用“打开表单”来检测编码方法时,它不是uft8,也不是GB *。 这是我的最终解决方案。

  

(1)下载'打开表格。

     

(2)正确打开它。您可以滚动编码方法,直到看到预览窗口中显示的中文字符。

     

(3)将其保存为utf-8(如果你想要utf-8)。

     

PS:您需要找出系统中的默认编码。目前   据我所知,Ubuntu处理UTF8很好。但Windows默认   Simplied Chinese是从GB **开始的。即使你把它编码为utf8,   不过,你也可以直接打开它。在我的情况下,r不能   打开我的utf-8 csv,但可以打开GB *编码。

即使您的文件非常大,此方法也能正常运行。 其他一些工作是谷歌表(但文件大小可以限制)。 Notepad ++也适用于较小的文件。

有一种方法可以通过打开文件并滚动编码方法来检测编码方法,直到您看到正确显示中文。

答案 5 :(得分:0)

您应使用以下命令保存csv文件:

df.to_csv(file_name, encoding = 'utf_8_sig')

代替:

df.to_csv(file_name, encoding = 'utf-8')