2

ピラミッド初心者です。私はpython2.7、MSSQL、slqalchemy.mssqlを使用し、文字セットを使用しgbkており、古いデータがたくさんあります。そこでgbk、次のコードを使用して、フロント html を にエンコードするように変更します。

@view_config(route_name='g', renderer='json')
def my_view1(request):
  print 2
  print request.charset
  print 1
  print isinstance(request.params['one'], str)
  if request.params['one']:
    print request.params['one']
    filters = (Bzjl.one == request.params['one'])
  try:
    two1 = DBSession.query(Bzjl).filter(filters)
  except DBAPIError:
    return Response(conn_err_msg, content_type='text/plain', status_int=500)
  return Response(getjson(two1))

URL の例:http://127.0.0.1:6543/g?one='中国福建'行を返しません:{"records": 0, "total": 20, "rows": [], "page": 1}

4

1 に答える 1

4

Pyramid はリクエスト ファクトリをサポートします。これを使用してリクエストをデコードできます。

def request_factory(environ):
    req = pyramid.request.Request(environ)
    return req.decode(charset='gbk')

config.set_request_factory(request_factory)

これは、ピラミッド内で渡されるリクエストが gbk 文字セットを使用することを意味します。この文字セットを使用してリクエストをデコードしないと、UnicodeDecodeError 例外が発生するため、これらを処理するためにリクエスト ファクトリに追加のロジックを追加することをお勧めします。

于 2012-06-16T06:16:43.567 に答える