У меня есть база данных сервера sql, размещенная в Azure. Я поместил строку в базу данных с умными кавычками («тест»). Я могу подключиться к нему и запустить простой запрос:
import pymssql
import json
conn = pymssql.connect(
server='coconut.database.windows.net',
user='kingfish@coconut',
password='********',
database='coconut',
charset='UTF-8',
)
sql = """
SELECT * FROM messages WHERE id = '548a72cc-f584-7e21-2725-fe4dd594982f'
"""
cursor = conn.cursor()
cursor.execute(sql)
row = cursor.fetchone()
json.dumps(row[3])
Когда я запускаю этот запрос на своем Mac (macOS 10.11.6, Python 3.4.4, pymssql 2.1.3), я возвращаю строку:
"\u201ctest\u201d"
Это правильно интерпретируется как умные кавычки и отображается правильно.
Когда я запускаю этот запрос в веб-развертывании Azure (Python 3.4, служба приложений Azure), я получаю другую (и неправильную) кодировку для той же строки:
"\u0093test\u0094"
Я указал кодировку как «UTF-8» в соединении pymssql. Почему среда Windows/Azure возвращает другую кодировку?
(примечание: я поместил предварительно созданный двоичный файл pymssql-2.1.3-cp34-none-win32.whl в рулевую рубку репозитория моего проекта в Azure. Это то же самое, что и предварительно созданный двоичный файл pymssql pymssql-2.1.3. -cp34-cp34m-win32.whl только на PyPI мне пришлось переименовать «cp34m» в «none», чтобы убедить pip установить его.)