2015-04-04 80 views
0

我試圖使用mysql.connector模塊將表添加到表中。這些行是從txt文件中讀取的。問題在於,例如「č」或「ľ」的標誌顯示爲「?」。在PhpMyAdmin。我試圖將數據庫編碼設置爲utf-8 bin,使用PhpMyAdmin中的operations按鈕。該文件根據notepad++編碼爲utf-8。我應該怎麼做才能解決它?錯誤編碼 - PhpMyAdmin/MySql

這裏一塊代碼的地方插入到數據庫:

with open('file') as f: 
    for line in f: 
     splitted = line.split('*') 
     splitted = ["\'{0}\'".format(element) for element in splitted] 
     insert = ', '.join(splitted) 

     try: 

      cursor.execute(""" 
       INSERT INTO table_data VALUES(DEFAULT,%s) 
      """%(insert)) 

      cnx.commit() 
     except: 
      print 'ERROR' 
cnx.close() 

enter image description here

WAMP - MySQL的控制檯 - SELECT * FROM表件: enter image description here

+0

當您在mysql(命令行)中查詢數據時,數據看起來像什麼? – 2015-04-04 17:28:59

+0

我試過了,它是一樣的,我已經上傳了SELECT * FROM表的圖片。我該怎麼辦?謝謝 – 2015-04-04 17:46:29

+0

檢查MySQL數據庫的字符集以查看它是否可以存儲?在「Ra?ianska」中。最簡單的方法是再次使用mysql CLI並執行直接插入「insert into yourtable(col)VALUES(」Ra?ianska「);」(用你的真實角色替換?)。 – 2015-04-04 17:51:54

回答

1

你需要UTF8無處不在。 utf8字節在你的客戶端告訴mysql你的客戶端有utf8字節,CHARACTER SET utf8在列上,在網頁上等

在你的屏幕截圖中,你會看到一些重音字符正確地通過,有些不是。請提供在職/非在職人員名單。 (每一個都足夠了。)你想要處理什麼語言?

由於某些字符變成'?',可能原因的數量有所限制。

請提供SHOW CREATE TABLE有問題的表格。

請爲SELECT col, HEX(col)...提供一些麻煩的細胞。如果在十六進制中說3F應該有重音字母,那麼問題出現在輸入上,並且數據不可恢復。

如果問題在輸入,我會猜想你有非latin1字節進入latin1列。一旦我們「修復」輸入,我們就可以處理輸出。

獲得'控制檯'顯示utf8字符:命令「chcp」控制「代碼頁」。 chcp 65001提供了utf8,但它也需要安裝一個特殊的字符集。要在控制檯窗口中設置字體:右鍵單擊窗口標題→屬性→字體→選擇Lucida控制檯

My charset blog討論這些問題和更多。