Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用Django和Mssql(重音)以正确的编码生成Json响应_Python_Sql Server_Django_Pyodbc - Fatal编程技术网

Python 如何使用Django和Mssql(重音)以正确的编码生成Json响应

Python 如何使用Django和Mssql(重音)以正确的编码生成Json响应,python,sql-server,django,pyodbc,Python,Sql Server,Django,Pyodbc,我正在使用Python通过pyodbc连接到SQL server 2014数据库。 我捕获这些行以生成一个词汇表,然后使用JsonResponse obj通过http和Django发送信息。当我测试它的时候,我的回答有反斜杠和数字,无论哪里有口音。如何正确编码响应 这是我的密码: 数据库\u odbc.py import pyodbc import json def connect(): conn = pyodbc.connect( r'DRIVER={ODBC Driv

我正在使用Python通过pyodbc连接到SQL server 2014数据库。 我捕获这些行以生成一个词汇表,然后使用JsonResponse obj通过http和Django发送信息。当我测试它的时候,我的回答有反斜杠和数字,无论哪里有口音。如何正确编码响应

这是我的密码:

数据库\u odbc.py

import pyodbc
import json
def connect():
    conn = pyodbc.connect(
        r'DRIVER={ODBC Driver 13 for SQL Server};'
        r'SERVER=myserver;'
        r'DATABASE=mydatabase;'
        r'UID=sa;'
        r'PWD=secret')
    return conn.cursor()

def get_data_v(cursor):
    cursor.execute('select * from data')
    columns = [column[0] for column in cursor.description]
    results = []
    for row in cursor.fetchall():
        results.append(dict(zip(columns, row)))
    return results
from django.http import JsonResponse
from .database_odbc import connect, get_data_v

def dataView(request):
    payload = get_data_v(connect())
    response = JsonResponse(payload, safe=False)
    response['contentType'] = 'application/json; charset=latin1'
    return JsonResponse(payload, safe=False)
视图.py

import pyodbc
import json
def connect():
    conn = pyodbc.connect(
        r'DRIVER={ODBC Driver 13 for SQL Server};'
        r'SERVER=myserver;'
        r'DATABASE=mydatabase;'
        r'UID=sa;'
        r'PWD=secret')
    return conn.cursor()

def get_data_v(cursor):
    cursor.execute('select * from data')
    columns = [column[0] for column in cursor.description]
    results = []
    for row in cursor.fetchall():
        results.append(dict(zip(columns, row)))
    return results
from django.http import JsonResponse
from .database_odbc import connect, get_data_v

def dataView(request):
    payload = get_data_v(connect())
    response = JsonResponse(payload, safe=False)
    response['contentType'] = 'application/json; charset=latin1'
    return JsonResponse(payload, safe=False)
我尝试过使用和不使用响应['contentType']标题


谢谢。

请发布一个“错误”编码的JSON示例。可能是有效的JSON。另外:仅在标头上设置字符集是不够的,这会导致非标准响应。如果您想要
ISO-8859-1
-编码的JSON(为什么?),您还必须设置[{“日期”:“2006-07-13”,“plage”:1,“Production”:151,“config”:79,“Arret”:2,“Pause”:0,“\u00c9teint”:158,“alcul\u00e9”:311,“prod”:22249,“quan”:33959,“Nombre”:0,“Hrs”:0},\u00c9应该是完全有效的JSON,Python的
json
模块unicode转义任何非ASCII字符。字符串应该在客户端正确解码。我使用谷歌浏览器读取json响应,这是我需要在谷歌浏览器上更改的配置吗?我正在使用python django在windows环境中工作。因此,在您的终端上是否没有正确地重现重音?旁注:
charset=latin1
仍然不正确,默认情况下JSON位于
utf-8
中。