2016-08-20 5 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 가 이상한 디코더로부터의 결과는 전술 한 것이다. 희망이 있다면 도움이 될 것입니다.

문제가 내 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"이라는 결론에 대해 확실하지 않습니다. 동일한 웹 페이지를 사용하여 다양한 인코딩으로 볼 수는 있지만 읽을 수있는 "러시아어"텍스트가 전혀 나오지 않습니다. – usr2564301

+0

나는 그것이 어떻게 일어나는지 모른다. 하지만이 문자열을 복사 한 후에는 어떻게 든 변하기 때문에이 웹 사이트에서는 사용할 수 없습니다. 아주 stange – Snobby

답변

0

문제는 데이터베이스에 있었다. 삽입 중에 스팅이 이미 손상되었습니다. 삽입 스크립트에서 mysql_set_charset('utf8');을 시도했지만 모든 것이 제대로되었습니다.