我已經結束了在我們的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