簡體   English   中英

OpenERP-UnicodeDecodeError:“ ascii”編解碼器無法解碼字節?

[英]OpenERP - UnicodeDecodeError: 'ascii' codec can't decode byte?

當我嘗試選擇一個字段時,我開始收到此錯誤。 這很奇怪,因為對於該類中的任何其他字段都不會給出此錯誤。 我不明白為什么它在這里甚至使用“ ascii”編解碼器,而對於其他人則不使用。 如果我更改標簽以僅由ASCII符號組成,則錯誤消失,但這不是解決方案。

我的領域是這樣描述的:

    'partner_p_id':fields.many2one('res.partner','PASPĮ', domain=[('is_paspi','=',True)], track_visibility='onchange'),

_track進行了跟蹤:

_track = {
  'partner_p_id':{},
}

文件中使用的編碼:

# -*- encoding: utf-8 -*-

確切的錯誤如下所示:

File "/openerp/server/openerp/addons/mail/mail_thread.py", line 366, in format_message
    message += '%s</div>' % change.get('new_value')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 34: ordinal not in range(128)
2014-03-06 13:21:14,042 13455 ERROR amb_test openerp.netsvc: ascii
<div> &nbsp; &nbsp; &bull; <b>PASPĮ</b>: 
34
35
ordinal not in range(128)

正如我所說,其他字段的跟蹤方式相同,並且某些字段在標簽中也包含非ascii符號,但是對於其他任何字段都不會產生此類錯誤。

您正在混合字符串和unicode。 給定錯誤消息,我猜這是發生了什么:

>>> message = u''
>>> message += '%s</div>' % ('<div> &nbsp; &nbsp; &bull; <b>PASPĮ</b>:')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 34: ordinal not in range(128)

您可以通過確保在change.get('new_value')調用中返回一個Unicode字符串來對其進行處理。 您可以執行以下任一操作(請注意括號中的字符串之前的u符號):

message += '%s</div>' % (u'<div> &nbsp; &nbsp; &bull; <b>PASPĮ</b>:')

或這個(請注意.decode('utf-8')

message += '%s</div>' % ('<div> &nbsp; &nbsp; &bull; <b>PASPĮ</b>:'.decode('utf-8'))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM