[Mono-dev] Maybe a System.Data.OracleClient.dll bug

Leszek Ciesielski skolima at gmail.com
Mon Oct 2 13:14:36 EDT 2006

On 10/2/06, Daniel Morgan <monodanmorg at yahoo.com> wrote:
> Yeah, I tried looking at it the other day, but I have
> no idea how to test unicode stuff.
> Maybe eno on GimpNet IRC #mono can help you.  He may
> not be able to help with Oracle, but he knows unicode
> very well.  jonp is another good person to to talk to.
> If possible, write a Windows.Forms application with a
> rich text box or a Gtk# application with a TextView
> and output your result there.  This is so unicode
> characters will show up for you.
> When looking at the output in a MS DOS Command Prompt,
> all I get is ? (question marks) as well.
> Also, Oracle SQL Developer is a good oracle GUI tool
> which is free to download and use.  It uses JDK 1.5
> (JRE 1.5 will not work).  This tool shows the unicode
> characters.
> --- Leszek Ciesielski <skolima at gmail.com> wrote:
> > I have started (finally!) to work on this bug. The
> > test I am currently
> > using fails, with or without patch... although in an
> > unexpected way.
> >
> > On mono, it breaks with:
> >
> > Failures:
> > 1)
> >
> MonoTests.System.Data.OracleClient.Oci.OciDefineHandleTest.TrimsWideUnicodeStringsTest
> > : Directly passed value mismatched
> >         String lengths are both 25.
> >         Strings differ at index 2.
> >
> >         expected:<"chㄼar入act本ers插 utf8
> > l日ong">
> >          but was:<"ch?ar?act?ers? utf8 l?ong">
> >         -------------^
> >
> > (If your PC does not render east-asian fonts - upper
> > line contains
> > some japanese and chinese glyphs, in the lower they
> > are replaced by
> > question marks.)
> > The string doesn't get trimmed. I suppose this is a
> > problem with the
> > setup of my Oracle database.
> > To verify, I tried to run the code on MS.Net 1.1. It
> > breaks... with
> > OracleException Ora 12571:TNS:packket writer
> > failure. Any sugestions?
> > I attach the regression for bug 78840.
My mistake, a followin mail didn't make it to the list. So:

Gr8. At least I know why I have problems getting this to work on MS.Net:
it won't work. (see
http://support.microsoft.com/default.aspx?scid=kb;en-us;322158# ) I'd
have to use their exact versions of Oracle8, none other are basicly
supported... so cross-testing this problem on windows is not possible.
On the other hand - after reading other people's mail, it seems to me
that all who experience the trimming have Oracle database setup as
UTF8. Mine works in EEMSWIN1250 (you can check this with "SELECT value
FROM nls_database_parameters WHERE parameter='NLS_CHARACTER_SET';").
This, however, should not be an issue, as NVARCHAR2 is meant for
storing Unicode data even when the database does not operate in UTF8
(consult http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b10749/ch6unicode.htm#i1007039).
So there is ANOTHER bug, this one presenting only with non-UTF8
databases... Oh shit. Somewhere before the string gets inserted, mono
(or OCI) replaces all non-ascii chars with character number 63 (yes,
the question mark).

[btw - I read the results through nunit gui runner, or KDE Konsole,
both of which display UTF8 fine.]

More information about the Mono-devel-list mailing list