exceptions.UnicodeEncodeError: 'ascii' 编码无法在位置 12 编码字符 u'\xc3': 序数超出范围(128)

-2 投票
1 回答
1777 浏览
提问于 2025-04-30 05:54

我在使用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'])

撰写回答