2012-06-16 40 views
2

我是新來的金字塔。我使用python2.7,MSSQL,slqalchemy.mssql並使用gbk字符集,並且我有很多舊數據。所以我改變前的HTML編碼爲gbk,使用下面的代碼:金字塔是否可以將默認的request.charset從utf-8更改爲gbk?

@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)) 

例如網址:http://127.0.0.1:6543/g?one='中國福建'返回行:{"records": 0, "total": 20, "rows": [], "page": 1}

回答

4

金字塔支持的請求工廠。您可以使用它來解碼請求。

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

config.set_request_factory(request_factory) 

這意味着在金字塔周圍傳遞的請求將使用gbk字符集。如果未使用此字符集解碼請求,將導致UnicodeDecodeError異常,因此您可能需要向請求工廠添加額外的邏輯來處理這些事情。

相關問題