Issue 2517: Error when printing an exception containing a Unicode string
この先が気になって調べてみた。
Issue 2517: Error when printing an exception containing a Unicode string
この問題は
- デフォルトのエンコーディングが ascii となっている件
→デフォルトのエンコーディングが「何のための」エンコーディングのデフォルトなのかが曖昧である点 - Exception type が __unicode__() を実装していない件
などが関係していると思うんだけど、
2. については Python 2.6 では一応解消している。
Python 2.6.2 (r262:71600, Jun 4 2009, 14:03:50) [GCC 4.3.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> e = Exception(u"テス子") >>> e Exception(u'\u30c6\u30b9\u5b50',) >>> str(e) Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128) >>> unicode(e) u'\u30c6\u30b9\u5b50'
Python 2.5.4 (r254:67916, Jun 4 2009, 14:03:24) [GCC 4.3.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> e = Exception(u"テス子") >>> e Exception(u'\u30c6\u30b9\u5b50',) >>> str(e) Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128) >>> unicode(e) Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)