簡體   English   中英

python2.7 __str__打印時導致UnicodeEncodeError

[英]python2.7 __str__ cause UnicodeEncodeError when print

我試圖重寫類的str方法,這是我的代碼:

# encoding: utf8
import json


class Test(object):

    def __str__(self):
        d = {
            'foo': u'中文'
        }

        return json.dumps(d, ensure_ascii=False)


test = Test()
print test.__str__()
print test

讓我感到困惑的是print test.__str__()可以正常工作,但是print test會導致異常:

Traceback (most recent call last):
  File "test.py", line 17, in <module>
    print(test)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 9-10: ordinal not in range(128)
python test.py  0.05s user 0.03s system 96% cpu 0.078 total

python版本2.7.12

__str__ 必須返回一個字符串值。 如果返回一個unicode對象,它將被自動編碼為ASCII。

改為顯式編碼:

class Test(object):
    def __str__(self):
        d = {
            'foo': u'中文'
        }
        return json.dumps(d, ensure_ascii=False).encode('utf8')

就個人而言,我不會使用__str__方法來提供JSON編碼。 選擇一個不同的方法名稱,例如tojson()

暫無
暫無

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

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