2016-08-20 98 views
1

我收到了mySQL數據庫中的元組列表。
當我嘗試打印一個項目,這裏是結果:Python:解碼俄語字符串

Ð」алоев ÐлекÑандр 
<class 'str'> 

這是CP1251,根據https://2cyr.com/decode/?lang=ru

我已經試過很多.encode().decode()變化與errors='ignore' PARAMS,但沒有成功。有任何想法嗎?

UPD 我收到我的元組清單mysql-connector-python

z是列表。上面的結果是從z[0][0]

def select_name(add): 
z = [] 
try: 
    dbconfig = read_db_config() 
    conn = MySQLConnection(**dbconfig) 
    cursor = conn.cursor() 
    cursor.execute("select name from phone_add where ph_add = " + str(add) + ";") 

    row = cursor.fetchone() 
    while row is not None: 
     z.append(row) 
     row = cursor.fetchone() 
    return z 

except Error as e: 
    print(e) 

finally: 
    cursor.close() 
    conn.close() 

UPD2 這裏是一個奇怪的解碼器。 希望它能幫助smb。

我意識到問題在插入到我的數據庫中。將在這裏挖。

q = string 

codings = ['latin1', 'utf8', 'cp1251', 'unicode-escape', 'cp866'] 
exceptions = ['ignore', 'strict', 'xmlcharrefreplace', 'backslashreplace'] 
for i in codings: 
    for j in codings: 
     for z in exceptions: 
      for p in exceptions: 
       try: 
        print(q.encode(i, errors=z).decode(j, errors=p) + '<------' + i + ' ' + j + ' ' + z + ' ' + p) 
       except: 
        pass 
+0

請顯示產生的代碼。 – wallyk

+1

我不太確定你的結論「這是CP1251」。使用同一個網頁,我可以用各種編碼查看它們,但是它們都不會產生完整可讀的「俄文」文本。 – usr2564301

+0

我不知道它是如何發生的。 但在此處複製此字符串後,它以某種方式發生了變化,因此我無法在此網站上使用它。非常穩定 – Snobby

回答

0

問題出在數據庫中。 插入過程中刺痛已經被損壞。 我在我的插入腳本中試過mysql_set_charset('utf8');,一切順利。