nev*_*219 396
一个简单的解决方法是使用Google电子表格.粘贴(仅当您具有复杂公式时的值)或导入工作表然后下载CSV.我只是试了几个角色而且效果很好.
注意:Google表格在导入时确实存在限制.看到这里.
注意:请注意Google表格中的敏感数据.
编辑:另一种选择 - 基本上他们使用VB宏或插件强制保存为UTF8.我没有尝试过任何这些解决方案,但它们听起来很合理.
aen*_*rew 126
我发现OpenOffice的电子表格应用程序Calc非常擅长处理CSV数据.
在"另存为..."对话框中,单击"格式选项"以获取CSV的不同编码.LibreOffice的工作方式与AFAIK相同.
elo*_*age 114
将Excel工作表另存为"Unicode文本(.txt)".好消息是所有国际字符都是UTF16(注意,不是UTF8).但是,新的"*.txt"文件是以TAB分隔的,而不是逗号分隔的,因此不是真正的CSV.
(可选)除非您可以使用TAB分隔文件进行导入,否则请使用您喜欢的文本编辑器并用逗号","替换TAB字符.
在目标应用程序中导入*.txt文件.确保它可以接受UTF16格式.
如果UTF-16已正确实现并支持非BMP代码点,则可以将UTF-16文件转换为UTF-8而不会丢失信息.我留给你找到你最喜欢的方法.
我使用此过程将数据从Excel导入Moodle.
小智 42
我知道这是一个古老的问题,但我碰巧遇到了与OP一样的问题.
没有找到任何提供的解决方案是一个可行的选择,我开始发现是否有办法只使用Excel来做到这一点.
幸运的是,我发现从xlsx格式保存到csv格式时,丢失的字符问题只发生(在我的情况下).我尝试先将xlsx文件保存到xls,然后再保存到csv.它确实有效.
请试一试,看看它是否适合您.祝好运.
小智 36
您可以在Unix下使用iconv命令(在Windows上也可以作为libiconv使用).
在命令行中以Excel格式保存为CSV后:
iconv -f cp1250 -t utf-8 file-encoded-cp1250.csv > file-encoded-utf8.csv
Run Code Online (Sandbox Code Playgroud)
(记得用你的编码替换cp1250).
对于像邮政编码数据库这样的大文件而言,它可以快速而有效地工作,这些文件无法导入到GoogleDocs(400.000个单元格的限制).
Nic*_*ick 25
这样做的唯一"简单方法"如下.首先,要意识到Excel .csv文件中显示的内容与隐藏的内容之间存在差异.
(1)打开一个Excel文件,其中包含信息(.xls,.xlsx)
(2)在Excel中,选择"CSV(逗号分隔)(*.csv)作为文件类型并保存为该类型.
(3)在NOTEPAD中(在"程序"下找到,然后在"开始"菜单中找到"附件"),在记事本中打开保存的.csv文件
(4)然后选择 - >另存为..在"另存为"框的底部,有一个标记为"编码"的选择框.选择UTF-8(不要使用ANSI或丢失所有重音等).选择UTF-8后,将文件保存为与原始文件略有不同的文件名.
该文件采用UTF-8格式,并保留所有字符和重音符号,例如可以导入MySQL和其他数据库程序.
这个答案来自这个论坛.
Don*_*ank 23
您可以在没有第三方软件的现代Windows机器上执行此操作.此方法可靠,它将处理包含引号,引用的制表符,CJK字符等的数据.
1.从Excel保存
在Excel中,将数据保存为file.txt使用类型Unicode Text (*.txt).
2.启动PowerShell
powershell从"开始"菜单运行.
3.在PowerShell中加载文件
$data = Import-Csv C:\path\to\file.txt -Delimiter "`t" -Encoding BigEndianUnicode
Run Code Online (Sandbox Code Playgroud)
4.将数据保存为CSV
$data | Export-Csv file.csv -Encoding UTF8 -NoTypeInformation
Run Code Online (Sandbox Code Playgroud)
Red*_*eti 14
"nevets1219"对于Google文档是正确的,但是如果您只是"导入"该文件,它通常不会将其转换为UTF-8.
但是,如果您将CSV导入现有的Google电子表格,则会转换为UTF-8.
这是一个食谱:
生成的文件将以UTF-8格式显示
Chl*_*loe 11
这将修复Excel保存的损坏的CSV文件,并以适当的编码重新保存.
Excel保存在CP-1252/Windows-1252中.在Notepad ++中打开CSV文件.选择
Encoding > Character Sets > Western European > Windows-1252
Run Code Online (Sandbox Code Playgroud)
然后
Encoding > Convert to UTF-8
File > Save
Run Code Online (Sandbox Code Playgroud)
首先告诉Notepad ++编码,然后转换.这些其他答案中的一些是在没有首先设置正确的编码的情况下进行转换,甚至更多地修改文件.他们会变成应该是什么’成?.如果您的角色不适合CP-1252,那么当它保存为CSV时它已经丢失.使用另一个答案.
对于那些寻找完全程序化(或至少是服务器端)解决方案的人来说,使用catdoc的xls2csv工具取得了巨大的成功.
安装catdoc:
apt-get install catdoc
Run Code Online (Sandbox Code Playgroud)
做转换:
xls2csv -d utf-8 file.xls > file-utf-8.csv
Run Code Online (Sandbox Code Playgroud)
这是非常快的.
请注意,包含该-d utf-8标志很重要,否则它将以默认cp1252编码对输出进行编码,并且存在丢失信息的风险.
请注意,它xls2csv也只适用于.xls文件,不适用于.xlsx文件.
小智 7
那么使用Powershell呢?
Get-Content 'C:\my.csv' | Out-File 'C:\my_utf8.csv' -Encoding UTF8
Run Code Online (Sandbox Code Playgroud)
小智 7
在Excel 2016及更高版本(包括Office 365)下,有一个专用于UTF-8格式的CSV选项。
在Office 365中,另存为;以前可能选择了CSV(逗号分隔),现在可以保存为CSV UTF-8(逗号分隔)(*。csv)的文件类型之一
最简单的方法: 无需Open Office和Google文档
csv刚重命名的文件,然后用逗号替换所有选项卡。要在Win 10上的记事本中执行此操作,只需选择一个选项卡字段,然后单击Ctrl+H。在打开的窗口中,,在“替换为”字段中键入逗号,然后单击“全部替换”。保存文件。结果将是逗号分隔的UTF-8 csv文件。无论如何不要用MS-Office打开它!!! 现在,您有了制表符分隔的CSV文件。 或者,如果您应用了步骤5,则以逗号分隔。