On Mon, Jan 02, 2006 at 11:39:39PM +0000, Tim Bunce wrote: > > > Any idea what should I try next to make CS_IS_UTF8 (and fbh->csid) > > behave like it is supposed to? > > I think it only needs to *4 if the _client_ csid is utf8.
Exactly. > Try the attached. > > If that works then I think similar logic is needed for NCHAR. > Could you reproduce the problem using an NCHAR field with your client > NCHAR charset set to utf8 and your non-nchar charset set to an 8bit > charset? > > Tim. > Index: oci8.c > =================================================================== > --- oci8.c (revision 2342) > +++ oci8.c (working copy) > @@ -1223,7 +1223,7 @@ > /* FALLTHRU */ > case 96: /* CHAR */ > fbh->disize = fbh->dbsize; > - if (CS_IS_UTF8(fbh->csid)) > + if (CS_IS_UTF8(csid)) Well, in revision 2334 (that you DBD-Oracle 1.17 RC you sent) there is no csid variable. Could you please send patch against 2334? > fbh->disize = fbh->dbsize * 4; > fbh->prec = fbh->disize; > break; > @@ -1249,7 +1249,7 @@ > break; > > case 8: /* LONG */ > - if (CS_IS_UTF8(fbh->csid)) > + if (CS_IS_UTF8(csid)) > fbh->disize = long_readlen * 4; > else > fbh->disize = long_readlen; -- ------------------------------------------------------------------------ Honza Pazdziora | [EMAIL PROTECTED] | http://www.fi.muni.cz/~adelton/ .project: Perl, mod_perl, DBI, Oracle, large Web systems, XML/XSL, ... Only self-confident people can be simple.
