John,

Not sure I get what you're saying here. I'm not actually selecting from a DB table so there's no opportunity for NCHAR.

Anyway, NCHAR is only typically for where you want to run your DB in 8 bit but have a few tables with utf-8 data. We have our whole DB in utf-8 (which can store any character 'on the planet') so we have no need for NCHAR.

Thanks for looking into this.

Steve

On 18/04/2009, at 5:08 AM, [email protected] wrote:

Was playing with this as well and I am running into some funny stuff but I
am not sure if it is a DBD issue

Seems it might be an in compatiably between NLS_LANG and the Char you are
trying to read

Try this code again this time add the data to a NCHAR field that may help

DBI version         : 1.605
DBD::Oracle version : 1.22
Database            : 11.1.0.7 (don't think this matters)
DB          : AL32UTF8 (this definitely matters)
NLS_LANG            : AMERICAN_AMERICA.AL32UTF8

Consider the following script ...

#!/usr/bin/perl -w

use strict;
use warnings;
use DBI qw();
use DBD::Oracle qw();

my $uidpwd = 'usr/p...@xxx';
my $dbh = DBI->connect(
 'dbi:Oracle:',
 $uidpwd,
 '',
 {RaiseError => 1, PrintError => 0},
 );

my $sth = $dbh->prepare(q(
   select  chr(14844588)
   from    dual
   ));
$sth->execute;
my ($sym1, $sym2, $sym3);
$sth->bind_columns(\($sym1));
$sth->fetch;
print "Sym (1) = $sym1\n";
$sth = $dbh->prepare(q(
   BEGIN
       :ret := chr(14844588);
   END;
   ));
$sth->bind_param_inout(':ret', \$sym2, 10);
$sth->execute;
print "Sym (2) = $sym2\n";
$dbh->disconnect;

If I run the script, I would expect to see the same results from the 2
print statements.  However, this is what I see ...

stbald...@au-stb-mobile:~/dev$ ./utf8.plx
Sym (1) = €
Sym (2) = €

Anyone have any clues as to what is happening?

Thanks,

Steve


This email is intended solely for the use of the addressee and may
contain information that is confidential, proprietary, or both.
If you receive this email in error please immediately notify the
sender and delete the email.






This email is intended solely for the use of the addressee and may
contain information that is confidential, proprietary, or both.
If you receive this email in error please immediately notify the
sender and delete the email.

Reply via email to