Я пытаюсь извлечь данные из SQL Server с помощью pyodbc и загрузить их в информационный фрейм, а затем экспортировать их в файл HTML, за исключением того, что я получаю следующую ошибку Unicode:
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 15500: ordinal not in range(128)
Вотмои текущие настройки (инструкции по кодированию для документов ):
cnxn = pyodbc.connect('DSN=Planning;UID=USER;PWD=PASSWORD;')
cnxn.setdecoding(pyodbc.SQL_CHAR, encoding='cp1252', to=unicode)
cnxn.setdecoding(pyodbc.SQL_WCHAR, encoding='cp1252', to=unicode)
cnxn.setdecoding(pyodbc.SQL_WMETADATA, encoding='cp1252', to=unicode)
cnxn.setencoding(str, encoding='utf-8')
cnxn.setencoding(unicode, encoding='utf-8')
cursor = cnxn.cursor()
with open('Initial Dataset.sql') as f:
initial_query = f.read()
cursor.execute(initial_query)
columns = [column[0] for column in cursor.description]
initial_data = cursor.fetchall()
i_df = pd.DataFrame.from_records(initial_data, columns=columns)
i_df.to_html('initial.html')
Странный, но полезный момент, на который стоит обратить внимание, это то, что при попытке экспортировать CSV:
i_df.to_csv('initial.csv')
Я получаю ту же ошибку, однако, когда я добавляю:
i_df.to_csv('initial.csv', encoding='utf-8')
Это работает. Может кто-нибудь помочь мне разобраться с этой проблемой кодирования?
Примечание: Я также пытался использовать sqlalchemy
соединение и pandas.read_sql()
, и та же ошибка сохраняется.