exceptions.UnicodeEncodeError: 'ascii' 编码无法在位置 12 编码字符 u'\xc3': 序数超出范围(128)
我在使用web2py框架时遇到了一个错误,内容是<type 'exceptions.UnicodeEncodeError'> 'ascii' codec can't encode character u'\xc3' in position 12: ordinal not in range(128)
。这个错误只在我尝试在web2py的INPUT HTML助手中使用self.servidor['NOME_SERVIDOR']
的字符串值时出现:INPUT(_name='NOME_SERVIDOR', _type='text', _value=self.servidor['NOME_SERVIDOR'], _readonly='true')
。
是的,我在文件顶部使用了# -*- 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字符串在两种情况下的表现是不同的。
补充一下:我在代码的其他部分也使用了同样的字符串,但只有在INPUT中出现了问题。
1 个回答
2
当你初始化 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'])