Исправление кодировок
Я закончил с испорченными кодировками символов в одной из наших колонок mysql.
Обычно у меня есть
√ © вместо é
√∂ вместо ö
√ ≠ вместо í
и так далее...
Совершенно уверен, что кто-то здесь будет знать, что случилось и как исправить.
ОБНОВИТЬ: Основываясь на ответе Бобинса, и так как у меня были эти данные в файле, я сделал следующее
#!/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/ |
+--------------------------+----------------------------+
снова загрузил данные, а затем, наконец, я загрузил данные правильно (сравнимо с существующими данными).