我正在将一个excel文件导出为CSV然后上传到MySQL数据库,但是每个具有™(商标)的条目都会变成一个小的(ª)。
数据库设置为utf8_unicode_ci,每行也是如此。任何想法为什么会发生这种情况仍然存在?
答案 0 :(得分:1)
有一种更简单的方法可以进行转换。如果您使用Windows,您可以免费下载Notepad ++等文本编辑器,Notepad ++可以将文本文件编码或转换为UTF-8(在菜单栏上,转到编码,切换到您想要的任何一个)。
使用像TextMate这样的Mac编辑器也是如此。文件>使用编码重新打开。
Excel确实自动以Windows格式自动编码来自Excel的文件生成。但是,如果它用于打开使用不同编码的文件,则应保留该编码;它不会将UTF-8编码的文件转换为Windows-1252。
答案 1 :(得分:1)
如果mojibake中有1-1替换,则不太可能涉及UTF-8。
原始数据似乎位于Macintosh encodings之一,其中'™'编码为0xAA,并被误解为windows-1252(windows-1254和-1258和{ {3}},ISO-8859-1和-9也可以),其中0xAA解码为'ª'。
答案 2 :(得分:0)
问题是Excel CSV文件(很可能是)采用Windows-1252格式。
因此,您很可能需要使用PHP将每个项目转换为UTF-8格式,使用mb_convert_variables等函数
例如:
$utfVersion = mb_convert_variables('UTF-8', 'Windows-1252', $windowsVersion);
顺便提一下,如果你通过命令行工具等查看MySQL表,可能仍然会显示错误,但是一旦你将它恢复回PHP就没问题。