flask在返回headers时的编码问题

看源码时,werkzeug在计算返回头content-length时,有下面代码:

content_length = sum(len(to_bytes(x, 'ascii'))
                 for x in self.response)

而to_bytes()有如下定义:

def to_bytes(x, charset=sys.getdefaultencoding(), errors='strict'):
    if x is None:
        return None
    if isinstance(x, (bytes, bytearray, buffer)):
        return bytes(x)
    if isinstance(x, unicode):
 这里--> return x.encode(charset, errors)
    raise TypeError('Expected bytes')

如果这里的x为unicode的中文,x.encode('ascii')不就执行错误了吗?但实际上网站里出现中文也不会出错,这是为什么呢?

阅读 4.2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题