
Am 10.04.2012 08:49, schrieb Michael Weber:
Guten Morgen werte Mitstreiter,
ich hab da mal ne Frage. Ich denke, dass dieses Thema bereits vielfach und sehr ausdauernd beredet wurde und vielleicht wird dieses Thema bereits gehasst. Man weiß es nicht, daher jetzt meine Frage.
Hallo, ich verwende folgendes Schnippsel gelegentlich. Für meine Zwecke reicht es (latin1 vs utf8). Hier wird aber mit Zeichenketten gearbeitet, so dass nicht codecs.open() gearbeitet werden kann. # Attention: Order of encoding_guess_list is import. Example: "latin1" always succeeds. encoding_guess_list=['utf8', 'latin1'] def try_unicode(string, errors='strict'): if isinstance(string, unicode): return string assert isinstance(string, str), repr(string) for enc in encoding_guess_list: try: return string.decode(enc, errors) except UnicodeError, exc: continue raise UnicodeError('Failed to convert %r' % string) def test_try_unicode(): for start, should in [ ('\xfc', u'ü'), ('\xc3\xbc', u'ü'), ('\xbb', u'\xbb'), # postgres/psycopg2 latin1: RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK ]: result=try_unicode(start, errors='strict') if not result==should: raise Exception(u'Error: start=%r should=%r result=%r' % ( start, should, result)) -- Thomas Guettler, http://www.thomas-guettler.de/ E-Mail: guettli (*) thomas-guettler + de