异常。UnicodeEncodeError:'ascii'编解码器无法在位置 12 中编码字符 u'\xc3':序号不在范围内(128)



我使用的是web2py框架,只有当我尝试在web2py的INPUT html助手INPUT(_name='NOME_SERVIDOR', _type='text', _value=self.servidor['NOME_SERVIDOR'], _readonly='true')中使用self.servidor['NOME_SERVIDOR']的字符串值时,我才会得到错误<type 'exceptions.UnicodeEncodeError'> 'ascii' codec can't encode character u'xc3' in position 12: ordinal not in range(128)

是的,我在文件顶部使用# -*- coding: utf-8 -*-

# coding=utf-8
from gluon.html import *

def exampleControllerFunction():
    class FormAvaliacao(object):
        def __init__(self):
            self.servidor = current.session.dadosServidor
            self.tipo = current.session.avaliacaoTipo
        @property
        def exampleError(self):
            return FORM(
                INPUT(_name='NOME_SERVIDOR', _type='text', _value=self.servidor['NOME_SERVIDOR'], _readonly='true')
            )
        @property
        def exampleOk(self):
            return self.servidor['NOME_SERVIDOR']
    form1 = FormAvaliacao().exampleError
    form2 = FormAvaliacao().exampleOk
    return dict(form=form1)

例如,上面的代码表示同一个unicode字符串表现不同的两种情况。

ps.:我在代码的许多其他部分使用了相同的字符串,这只是INPUT内部的一个问题。

http://web2py.com/examples/static/epydoc/web2py.gluon.html-pysrc.html#

当您初始化Input类时,它会调用self_postprocessing(),然后调用str(self['_value'])。这很可能是错误发生的地方。

1766          if self['_value'] is None or isinstance(self['_value'],cgi.FieldStorage): 
1767              _value = None 
1768          else: 
1769              _value = str(self['_value'])

最新更新