Python, locale i unicode

Jacek Konieczny jajcus w pld.org.pl
Śro, 7 Lis 2001, 18:17:29 CET


Witam,

Właśnie pisze programik w pythonie, który będzie wykożystywał Unicode.
No i znalazłem taki "kwiatek" w /usr/lib/python2.1/site.py:

#v+
# Set the string encoding used by the Unicode implementation.  The
# default is 'ascii', but if you're willing to experiment, you can
# change this.

encoding = "ascii" # Default value set by _PyUnicode_Init()

if 0:
    # Enable to support locale aware default string encodings.
    import locale
    loc = locale.getdefaultlocale()
    if loc[1]:
        encoding = loc[1]

if 0:
    # Enable to switch off string to Unicode coercion and implicit
    # Unicode to string conversion.
    encoding = "undefined"
#v-

To są ustawienia domyślne. Później ten "encoding" jest ustawiany przez
sys.setdefaultencoding(), a funkcja sys.setdefaultencoding() jest
usuwane.

W skrócie: domyślnie python przy kodowaniu/dekodowaniu Unicode olewa
locale i się wykrzaczy przy próbie przekodowania do/z Unicode
jakiegokolwiek znaku spoza ASCII.
Żeby było śmieszniej programy w pythonie nie mają żadnej możliwości
zmienić tego. :-(

IMHO warto byłoby to zmienić. Jeśli nikt nie widzi przeciwskazań zrobię
patcha i wrzuce do CVS. Zajżałem do FAQ i tam nawet jest napisane żeby
to zmienić jak wyskakuje UnicodeError. Nie rozumiem tylko czemu
domyślnie jest tak jak jest...

Pozdrowienia,
        Jacek



Więcej informacji o liście dyskusyjnej pld-devel-pl