我已经结束了在我们的mysql列中的一个乱七八糟的字符编码。修复编码
通常我有√©的
代替é
√∂代替邻
√≠的相反,我
等等...
相当肯定,这里有人会知道发生了什么事以及如何解决。
UPDATE: 基于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/ |
+--------------------------+----------------------------+
上传的数据,最后我得到了数据正确加载(与现有的数据具有可比性)。
它目前使用什么编码?数据如何被插入? – NullUserException 2010-09-29 15:48:35
回声NullUserException,请发布'SHOW CREATE TABLE TableName'的输出。请同时发布'SHOW VARIABLES LIKE'character_set%''的输出。 – Hammerite 2010-09-29 16:11:00
@Hammerite,NullUserException,感谢您的输入... – Unreason 2010-09-30 08:31:38