2014-10-28 120 views
-2

我正在使用web2py框架,並且只有當我嘗試時纔會收到錯誤<type 'exceptions.UnicodeEncodeError'> 'ascii' codec can't encode character u'\xc3' in position 12: ordinal not in range(128)在web2py的INPUT html helper:INPUT(_name='NOME_SERVIDOR', _type='text', _value=self.servidor['NOME_SERVIDOR'], _readonly='true')中使用字符串值self.servidor['NOME_SERVIDOR']exceptions.UnicodeEncodeError:'ascii'編解碼器無法在位置12編碼字符u' xc3':序號不在範圍內(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中成爲問題。

+1

您從文章中省略了兩個重要元素。首先,你的帖子中沒有問題。 StackOverflow是一個問答網站,但如果沒有問題,很難形成有用的答案。其次,你還沒有向我們展示你的代碼在哪裏失敗。請提供儘可能短的**完整**程序來證明您的問題。 – 2014-10-28 20:11:20

+0

「編碼」註釋行隻影響代碼中的字符串文字,它不影響字符串在程序中的處理方式。這不是某種魔力子彈。 – 2014-10-28 20:32:21

+0

感謝您的有用評論,@Robᵩ。我編輯了我的問題。 – 2014-10-28 20:37:34

回答

2

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

當你initalize Input類,它調用self._postprocessing(),這反過來又調用STR(自[ '_值'])。這可能是錯誤發生的地方。

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

使用'''_value = self.servidor ['NOME_SERVIDOR']。encode('uff-8')'''解決了問題 – 2014-10-29 16:58:17

相關問題