utf8 in __repr__()

01/10/2010 - 10:20 von Thomas Guettler | Report spam
Hallo,

Doku zu __repr__:

http://docs.python.org/reference/da...t.__repr__
{{{
Called by the repr() built-in function and by string conversions (reverse quotes) to compute the “official” string
representation of an object. If at all possible, this should look like a valid Python expression that could be used to
recreate an object with the same value (given an appropriate environment). If this is not possible, a string of the form
<...some useful description...> should be returned. The return value must be a string object.
}}}

Aus meiner Sicht sollte das Ergebnis von __repr__() nicht UTF8 enthalten.

Bei einem Script kam es zu einem Fehler, wenn ich das Ergebnis in eine Datei umgelenkt habe.
Ohne Dateiumlenkung hat es funktioniert.

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1365: ordinal not in range(128)

Im speziellen geht es um django.db.models.base __repr__:

http://code.djangoproject.com/brows...se.py#L341

Ist das ein Bug?

Thomas

Thomas Guettler, http://www.thomas-guettler.de/
E-Mail: guettli (*) thomas-guettler + de
 

Lesen sie die antworten

#1 deets
01/10/2010 - 11:29 | Warnen spam
Thomas Guettler writes:

Hallo,

Doku zu __repr__:

http://docs.python.org/reference/da...t.__repr__
{{{
Called by the repr() built-in function and by string conversions (reverse quotes) to compute the “official” string
representation of an object. If at all possible, this should look like a valid Python expression that could be used to
recreate an object with the same value (given an appropriate environment). If this is not possible, a string of the form
<...some useful description...> should be returned. The return value must be a string object.
}}}

Aus meiner Sicht sollte das Ergebnis von __repr__() nicht UTF8
enthalten.



Aus dem Grund ist die Repraesentation eines unicode-objektes ja auch
nicht UTF-8, sondern ein spezielles Literal mit codepoint-notation:

repr(u"ö")






u'\xf6'



Bei einem Script kam es zu einem Fehler, wenn ich das Ergebnis in eine Datei umgelenkt habe.
Ohne Dateiumlenkung hat es funktioniert.

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1365: ordinal not in range(128)

Im speziellen geht es um django.db.models.base __repr__:

http://code.djangoproject.com/brows...se.py#L341

Ist das ein Bug?



Ich finde ja. __repr__ sollte statt dem komischen smart_str stattdessen
seinerseits __repr__ aufrufen.

Diez

Ähnliche fragen