繁体   English   中英

Python:解码俄语字符串

[英]Python: decode russian string

我从mySQL数据库中收到了一个元组列表。
当我尝试打印项目时,结果如下:

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

根据https://2cyr.com/decode/?lang=ru ,这是cp1251

我尝试了很多.encode().decode()的变种, errors='ignore'参数,但没有任何成功。 有任何想法吗?

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

问题出在数据库中。 插入期间已经损坏了刺痛。 我试过mysql_set_charset('utf8'); 在我的插入脚本中,一切都很顺利。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM