Hi, I need to get data from an Oracle DB that contains unicode data (chinese text). But the chinese data that I receive is wrong (only ¿). After a look at the Oracle documentation I've found an environment variable called NLS_LANG that you could set to define what charset the DB client use and it work fine.
But it's not what I call a 'clean' solution and I suppose that it must exist another way to force the client DB to use UTF8, or another solution to get my data. Could someone help me ? Thanks. Example: # -*- coding: latin1 -*- import os import cx_Oracle os.environ["NLS_LANG"] = ".UTF8" con = cx_Oracle.connect("demo/[EMAIL PROTECTED]") cur = con.cursor() cur.execute("select DESCRIPTION from DEC_DESCRIPTION where DEC_DESCRIPTION_ID = 1792528") val1 = cur.fetchone()[6] val2 = cur.fetchone()[6] print con.encoding, con.nencoding, con.maxBytesPerCharacter cur.close() print val1.decode(con.encoding) print val2.decode(con.encoding) del os.environ["NLS_LANG"] >>> UTF-8 UTF-8 3 珀マザーボードのテスト作業 颇マザーボードのテスト作業マザーボードのテスト作業, without NLS_LANG setting I get: >>> WINDOWS-1252 WINDOWS-1252 1 ¿¿¿¿¿¿¿¿¿¿¿¿¿ ¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿, -- http://mail.python.org/mailman/listinfo/python-list