@nrv

Как исправить кракозябры в сообщениях об ошибке в pyodbc/pymssql?

Сами по себе кириллические символы нормально выводятся, но в сообщениях об ошибке (как в Python IDLE, так и в cmd.exe) в:
1)pymssql:
Traceback (most recent call last):
  File "mypymssql.py", line 9, in <module>
    database='SOVCOMBANK2'
  File "pymssql.pyx", line 641, in pymssql.connect (pymssql.c:10824)
pymssql.OperationalError: (18456, b'\xd0\x9e\xd1\x88\xd0\xb8\xd0\xb1\xd0\xba\xd0\xb0 \xd0\xb2\xd1\x85\xd0\xbe\xd0\xb4\xd0\xb0 \xd0\xbf\xd0\xbe\xd0\xbb\xd1\x8c\xd0\xb7\xd0\xbe\xd0\xb2\xd0\xb0\xd1\x82\xd0\xb5\xd0\xbb\xd1\x8f "nrv99".DB-Lib error message 20018, severity 14:\nGeneral SQL Server error: Check messages from the SQL Server\nDB-Lib error message 20002, severity 9:\nAdaptive Server connection failed (ASUSU38N\\SQLEXPRESS2012)\n')

Я так понимаю, это коды символов вместо самих символов.
2)pyodbc:
Traceback (most recent call last):
  File "mypyodbc.py", line 9, in <module>
    """)
pyodbc.ProgrammingError: ('42S02', '[42S02] [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]������������ ��� ������� "CLIENTS". (208) (SQLExecDirectW)')

Уже нормальные кракозябры.
  • Вопрос задан
  • 644 просмотра
Пригласить эксперта
Ответы на вопрос 2
@korifey13
Вопрос задан более двух лет назад, и тем не менее сегодня я тоже получил кракозябрами описание ошибки от виндового MSSQL сервера. Проблема решилась энкодингом и декодингом строки:
try:
    conn = pyodbc.connect(...)
except Exception as err:
    print(err.args[1].encode("cp1252").decode("cp1251"))

Откуда я взял cp1252 и cp1251? Скопировал кракозябры из консоли и расшифровал Декодером.
Ответ написан
Комментировать
@d-stream
Готовые решения - не подаю, но...
Стоит попробовать переключить кодировку (chcp unicode или chcp 65001)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы