О внесении запроса с PyODBC, я получаю мои табличные данные:Строка проблема кодирования с pyodbc вернулись данные
u'\u3836\u3431\u3132\u3230\u3030'
Фактическое содержание в моей колонке базы данных как:
6814210200
Когда я явно закодировать pyodbc
«s возвращается значение utf-16
, я получаю содержание как (ближе я пошел):
>>> print d['data'][0]['upc'].encode('utf-16')
��6814210200
#^^ two junks
Мой вопрос: как я могу получить закодированное значение непосредственно из запроса PyODBC?
У меня уже есть CHARSET=UTF16
набор в моей строке подключения базы данных как:
pyodbc.connect("DRIVER=<driver_name>;" + \
"SERVER=<server_ip>;" +\
"DATABASE=<database>;" +\
"UID=<user>;" +\
"PWD=<password>;" + \
"CHARSET=UTF16", # setting charset
ansi=True)
и во всех моих odbc.ini
и odbcinst.ini
файла, я поставил:
UnicodeTranslationOption = utf16
CharacterTranslationOption = all
под установкой моего водителя.
Есть ли какая-то особая причина, по которой вы используете UTF-16? Это не очень распространено и почти неслыханно в Linux-системах. Что произойдет, если вы установите «CHARSET = UTF8»? –
Я не знаю, относится ли это к вашей конкретной ситуации (и я ничего не знаю о PyODBC), но в этой статье есть много хорошей информации о Unicode (как для Python 2 и Python 3): [Pragmatic Unicode] (http : //nedbatchelder.com/text/unipain.html), который был написан ветеран SO Нед Батчелдер. –
@ PM2Ring '' CHARSET = UTF8 "' также возвращает тот же результат. Причина использования 'UTF-16' заключается в том, что я использую драйвер базы данных Nettezza, основанный на кодеке UTF-16. И спасибо за то, что вы разделили статью, мне это интересно. Посмотрите. –