我已经结束了,在我们的MySQL的一列搞砸字符编码。

通常我

√©代替é结果 √∂代替邻点击 √≠代替í

和等等...

相当肯定,这里有人会知道发生了什么,以及如何解决。

<强>更新 基于bobince的答案,因为我在一个文件中有这样的数据,我做了以下

#!/user/bin/env python
import codecs
f = codecs.open('./file.csv', 'r', 'utf-8')
f2 = codecs.open('./file-fixed.csv', 'w', 'utf-8')
for line in f:
    f2.write(line.encode('macroman').decode('utf-8')),

之后

load data infile 'file-fixed.csv' 
into table list1 
fields terminated by ',' 
optionally enclosed by '"' 
ignore 1 lines;

正确导入的数据。

<强> UPDATE2: Hammerite,只是为了完整性这里有所需的详细信息...

mysql> SHOW VARIABLES LIKE 'character_set%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     | 
| character_set_connection | latin1                     | 
| character_set_database   | latin1                     | 
| character_set_filesystem | binary                     | 
| character_set_results    | latin1                     | 
| character_set_server     | latin1                     | 
| character_set_system     | utf8                       | 
| character_sets_dir       | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+

对于我导入到该表的SHOW CREATE TABLE具有DEFAULT CHARSET=utf8

<强> EDIT3:

其实与上面的设置load没有做正确的事(我不能比现有的UTF8领域,只有我的加载数据的看着的,如果它是正确地装载;我假定因为错误的,但是匹配客户端,连接和结果的字符集),所以我的设置更新为:

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       | 
| character_set_connection | utf8                       | 
| character_set_database   | utf8                       | 
| character_set_filesystem | binary                     | 
| character_set_results    | utf8                       | 
| character_set_server     | utf8                       | 
| character_set_system     | utf8                       | 
| character_sets_dir       | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+

再次上载的数据,然后最终我得到的数据加载正确(与现有的数据具有可比性)。

scroll top