答案 0 :(得分:2)
收集Unicode DATA时的一个常见问题是将Connection 和数据库/表/列字符集配置为ISO-8859-1,但随后插入实际为utf-8的数据。该数据库基本上被告知,“这里有一些8859-1编码的数据,将它存储在这个8859-1表中”。它没有进行任何转换,因为它没有意识到数据不在8859-1中。所以数据是utf-8,但数据库基本上已经被告知它在8859-1。
这是一个阴险的问题,因为正如你所说的,如果你将charset更改为UtF-8,数据库会将它们错误地转换为,因为它会转换“8859-1”数据(重新构建databae 认为它是8859-1)到utf-8--转换当然失败了,因为数据确实在utf-8中。
所以基本上问题是phpmyadmin在8859-1但是你告诉它在8859-1中插入数据然后告诉它你是在8859-1提供数据,然后给了它utf-8数据。数据库认为它是8859-1所以解决这个问题的唯一简单方法是a)保持表现就像它的8859-1,即使它不是,并希望你永远不必处理排序,搜索,整理等(可能工作)在您的情况下),或b)将数据拉出8859-1(保留未转换),然后在设置数据库并连接到utf-8后重新插入数据,以便数据库知道数据真正的字符集在。
希望这是有道理的。如果没有,请告诉我。这是一个很难解决的问题。
答案 1 :(得分:1)
您可以考虑使用PHP打开您的csv(因为您在标签中提到它),并在使用查询保存它们之前在字段上使用utf8_encode。
答案 2 :(得分:0)
这个问题太老了,但是在各种程序(例如Excel等)中将文件的编码从ISO-8859-1更改为UTF-8不适用于我。
我的问题是文件中的intérêt
之类的单词显示为intérêt
。
万一这对某人有所帮助,以下是最终对我有用的东西:
就是这样!现在,使用Excel打开这个新的CSV文件应该可以正确显示非英文字符。