Unicode / cx_Oracle problem
Diez B. Roggisch
deets at nospam.web.de
Sun Sep 10 17:17:14 EDT 2006
> Value of the variable 'id' is u'\ufeff'
> Value of the variable 'mean' is u'('
So they both are unicode objects - as I presumed.
> It's very hard to figure out what to do on the basis of complexities
> on the order of
>
> http://download-east.oracle.com/docs/cd/B25329_01/doc/appdev.102/b25108/xedev_global.htm#sthref1042
>
> (tiny equivalent http://tinyurl.com/fnc54
Yes, that is somewhat intimidating.
> But I'm not even sure I got that far. My problems so far seem prior:
> in Python or Python's cx_Oracle driver. To be candid, I'm very tempted
> at this point to abandon the Python effort and revert to an all-ucs2
> environment, much as I dislike Java and C#'s complexities and the poor
> support available for all-Java databases.
That actually doesn't help you much I guess - just because JDBC will
convert java's unicode strings to byte strings behind the curtains, you
will lose all encoding information nonetheless - especially if the DB
itself isn't running an encoding that will allow for all possible
unicode characters to be represented.
>> Then you need to encode the unicode string before passing it - something
>> like this:
>>
>> mean = mean.encode("latin1")
>
> I don't see how the Chinese characters embedded in the English text
> will carry over if I do that.
Me neither, but how could I have foreseen that? So use something else
instead - utf-8 for example, or whatever the oracle connection will grok.
I think you should read up on what unicode and encodings are, and how
they work in python, and unfortunately how they do work in oracle.
Because even if you use java - not understanding how things are
connected will hit you in the neck at some point.
Diez
More information about the Python-list
mailing list