Страницы

Поиск по вопросам

четверг, 19 марта 2020 г.

SyntaxError: Non-ASCII character '\xd1'

#python #access #база_данных #запрос #sql


Написал следующий код
conAcc = pyodbc.connect('DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=D:\ThirdTask\Northwind.accdb')
SqlAccess=conAcc.cursor();
SqlAccess.execute(sql.sql_count_record_clients);
CountOfRecords=SqlAccess.fetchone();
conAcc.close();

где в модуле sql.py есть строка 
sql_count_records_clients='''SELECT COUNT(*) FROM "Список клиентов"'''

В результате на эту строку в sql.py выдает ошибку
Traceback (most recent call last):
  File "D:\ThirdTask\connect.py", line 5, in 
    import json,sqlite3,sql
  File "D:\ThirdTask\sql.py", line 48
SyntaxError: Non-ASCII character '\xd1' in file D:\ThirdTask\sql.py on line 48, but
no encoding declared; see http://www.python.org/peps/pep-0263.html for details

Что необходимо слелать, чтоб ошибка исчезла?    


Ответы

Ответ 1



Python 2.x по умолчанию читает исходники как ascii, и если видит октеты больше 127, то кричит вот этим самым SyntaxError. Чтобы указать Python в какой кодировке записан файл, нужно в начало файла добавить специальный комментарий, подходящий под регэксп «coding[:=]\s*([-\w.]+)», как правило — одного из следующих видов: # coding=<кодировка> # -*- coding: <кодировка> -*- # vim: set fileencoding=<кодировка> : Где <кодировка> — собственно, кодировка, например, «utf-8» или «cp1251». Подробно это описано в PEP 263.

Ответ 2



По опыту - в таких ситуациях обычно виновата кодировка БД…

Комментариев нет:

Отправить комментарий