由于CSV只是一个文本文件,我相信它可以处理UTF8编码,所以我猜这是Excel的限制,但我正在寻找一种从Excel到CSV的方法,并保持非ASCII字符完整。
将Excel表格保存为“Unicode 文本 (.txt)”格式。好消息是,所有国际字符都使用UTF16编码(请注意,不是UTF8)。但是,新的“*.txt”文件是TAB分隔符而不是逗号分隔符,因此它不是真正的CSV。
(可选)除非您可以使用TAB分隔符文件进行导入,否则请使用您喜欢的文本编辑器并将TAB字符替换为逗号“,”。
在目标应用程序中导入*.txt文件。确保它支持UTF16格式。
如果已经正确实现了UTF-16,并支持非BMP代码点,则可以将UTF-16文件转换为UTF-8而不会丢失信息。我让您自己找到喜欢的方法来完成这个步骤。
我使用这个过程将数据从Excel导入到Moodle。
;
,最后使用默认的“文件字符集:utf-8”,格式为“使用LOAD DATA的CSV”将txt文件导入phpmyadmin。所有编码都被正确传输。 - Avatar我知道这是一个旧问题,但我偶然间遇到了这个问题,正在与OP一样苦苦挣扎。
没有找到任何可行的解决方案,我开始探索是否有一种只使用Excel就可以解决的办法。
幸运的是,在我的情况下,丢失字符问题仅在从xlsx格式保存为csv格式时发生。我尝试先将xlsx文件保存为xls,然后再保存为csv。它确实奏效了。
请尝试一下,看看是否适用于您。祝好运。
$data = Import-Csv C:\path\to\file.txt -Delimiter "`t" -Encoding BigEndianUnicode
4. 将数据保存为CSV格式
$data | Export-Csv file.csv -Encoding UTF8 -NoTypeInformation
CHARACTER SET utf8mb4
,如此处所述:https://dev59.com/qGgu5IYBdhLWcg3w8bhs#10959780。 - RyanImport-Csv ... | Export-Csv ...
,而不使用中间的 $data
变量。 - Sjlver这个文件以 UTF-8 格式编码,保留了所有字符和重音符号,可以导入到 MySQL 和其他数据库程序中。
本答案摘自此论坛。
这是我发现很有用的另一个功能: "Numbers" 允许在保存为 CSV 时进行编码设置。
这将修复被Excel保存并以正确编码重新保存的已损坏的CSV文件。
Excel保存为CP-1252 / Windows-1252。在Notepad ++中打开CSV文件。选择
Encoding > Character Sets > Western European > Windows-1252
那么
Encoding > Convert to UTF-8
File > Save
首先告诉Notepad++编码,然后转换。其他一些答案在没有设置正确的编码的情况下进行转换,会进一步破坏文件。它们将把应该是'
的内容变成達
。如果您的字符无法适应CP-1252,则在保存为CSV时已经丢失。对此,请使用另一个答案。
.csv
就是一个文本文件。这个答案将打开被 Excel 损坏的 CSV 文件,修复它,然后用正确的编码重新保存它。 - Chloe"nevets1219"关于Google文档的说法是正确的,但是如果你只是简单地“导入”文件,它通常不会将其转换为UTF-8。
但是,如果您将CSV文件导入到现有的Google电子表格中,它将会被转换为UTF-8。
以下是操作步骤:
生成的文件将是UTF-8编码的