mysql 列の 1 つで文字エンコーディングが台無しになってしまいました。
通常、私は持っています
é の代わりに √©
ö の代わりに √∂
í の代わりに √≠
等々...
ここにいる誰かが何が起こったのか、どのように修正するのかを知っていることはかなり確実です.
更新: ボビンスの回答に基づいて、このデータをファイルに保存していたので、次のことを行いました
#!/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;
データを正しくインポートしました。
更新 2: 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/ |
+--------------------------+----------------------------+
データを再度アップロードし、最終的にデータを正しくロードしました (既存のデータと同等)。