pyodbc удаляет строки Unicode

Я использую pyodbc для подключения sqlserver, а ниже – моя строка соединения. Все правильно, но результаты возвращаются как строка unicode. У меня есть CHARSET = UTF8 в строке соединения, но все еще его возвращает как строку unicode?

Есть ли способ, которым я могу ограничить его, используя сам параметр соединения?

Я не хочу вызывать дополнительную функцию для преобразования моего юникода в обычные строки.

import pyodbc as p connstr= 'DRIVER={SQL Server};SERVER=USERNAME\SQLEXPRESS;DATABASE=TEST;Trusted_Connection=yes;unicode_results=True;CHARSET=UTF8' conn = p.connect(connstr) print conn cursor = conn.cursor() result = cursor.execute("select * from employee1") for each in result: print each 

Вы не можете справиться с этой проблемой в строке подключения. SQL Server не имеет свойства CHARSET в настройках подключения odbc, так что это не принесет вам пользы.

Общая проблема, с которой вы сталкиваетесь, заключается в том, что данные UNicode в базе данных. Тип данных для этого столбца – nvarchar, это расширенный (UTF-16 … может быть UC-2 в Windows, не может запомнить) тип данных для включения международных символов данных.

Ваши параметры состоят в том, чтобы преобразовать данные с помощью приведения в запрос выбора, например:

 SELECT CAST(fieldname AS VARCHAR) AS fieldname 

или преобразовать его в python, например:

 # to utf-8 row.fieldname.encode('utf8') # to ascii, ignore non-utf-8 characters row.fieldname.encode('ascii', 'ignore') # to ascii, replace non-utf-8 characters with ? row.fieldname.encode('ascii', 'replace') 

Если вам не нужны международные символы, вы можете сохранить данные в varchar вместо nvarchar.