UnicodeDecodeError в библиотеке Python pymssql - PullRequest
0 голосов
/ 26 июня 2018

Я использую pymssql, чтобы получить некоторые данные с сервера SQL и сохранить результаты в фрейме данных pandas.Когда я пытаюсь выбрать столбец, содержащий символы utf-8 (фарси), я получаю эту ошибку:

UnicodeDecodeError: кодек «utf-8» не может декодировать байт 0xca в позиции 0: недействительнобайт продолжения

Но с другими столбцами в базе данных все в порядке.

Это мой фрагмент кода, и я запускаю код с python3.6:

import pymssql
import pandas as pd

conn = pymssql.connect(server, username, password, database)
cursor = conn.cursor(as_dict=True)

cursor.execute("""
 SELECT id, title
 FROM products
""")


df = pd.DataFrame(columns=['id', 'title'])

for row in cursor:
    df = df.append(row, ignore_index=True)


conn.close()

1 Ответ

0 голосов
/ 27 июня 2018

Вы на 100% уверены, что данные хранятся в UTF-8?Выполнение команды SELECT SERVERPROPERTY('Collation'); должно помочь вам определить, как данные кодируются в базе данных.

Я думаю, что кодировкой по умолчанию является Latin-1, и это будет означать, что 0xCA - это «прописная буква E в округе (Ê)».

Вы можете настроить pymssql для доступа к базе данных с использованием этой кодировки, добавив аргумент charset="ISO-8859-1" к аргументам соединения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...