J'ai un problème avec la comparaison d'une chaîne obtenue à partir de la base de données PostgreSQL UTF-8:comment comparer correctement la chaîne unicode de psycopg2 en Python?
>>> db_conn = psycopg2.connect("dbname='foo' user='foo' host='localhost' password='xxx'")
>>> db_cursor = db_conn.cursor()
>>> sql_com = ("""SELECT my_text FROM table WHERE id = 1""")
>>> db_cursor.execute(sql_com)
>>> sql_result = db_cursor.fetchone()
>>> db_conn.commit()
>>> db_conn.close()
>>> a = sql_result[0]
>>> a
u'M\xfcnchen'
>>> type(a)
<type 'unicode'>
>>> print a
München
>>> b = u'München'
>>> type(b)
<type 'unicode'>
>>> print b
München
>>> a == b
False
Je suis vraiment confus pourquoi est-ce, je quelqu'un peut me dire comment dois-je comparer une chaîne avec un tréma de la base de données à une autre chaîne, de sorte que la comparaison est vraie? Ma base de données est UTF8:
[email protected]:$ psql -l
List of databases
Name | Owner | Encoding
-----------+----------+----------
foo | foo | UTF8
Qu'est-ce que sys.stdout.encoding et sys.stdin.encoding? –
En supposant que votre encodage de console est utf8, vous devriez utiliser 'b = 'München'.decode (' utf8 ')' pour obtenir ce que vous attendez. – piro