2016-08-20 8 views
1

私は、mySQLデータベースからタプルのリストを受け取った。
私はここに、アイテムを印刷してみた結果です:Python:デコードロシア語の文字列

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

は、これは私がerrors='ignore'のparamsでなく、任意の成功なし.encode().decode()のバリエーションの多くを試してみましたhttps://2cyr.com/decode/?lang=ru

によると、CP1251です。何か案は?

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に役立つことを願っています。

問題が私のDBに挿入されていることに気付きました。ここで掘るだろう。

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です"というあなたの結論はあまりよく分かりません。その同じWebページを使って、さまざまなエンコーディングで見ることができますが、どれも完全な読みやすい "ロシア語"のテキストにはなりません。 – usr2564301

+0

どうしたのか分かりません。 しかし、ここでこの文字列をコピーした後、何とか変わってしまいますので、このウェブサイトでは使用できません。非常にスタンゲ – Snobby

答えて

0

問題がデータベースにありました。 刺し傷は、挿入中にすでに損傷していました。 私は挿入スクリプトでmysql_set_charset('utf8');を試してみました。