Re: utf8 encoding problem



Unfortunety I cannot say for 100% sure this will solve you problem as there is no way to exactly match your system's setup. Oracle version/patches/Oracle client system enviornment etc.

There were a large number of improvements in UTF encoding since 1.12 so my only sugestion is for you to install DBD::Oracle 1.19 locally on a seperate machine and then test to see if the bug continues.

The UTF bug like this could be caused by the Oracle cleint or the Oracle DB as well and not just DBD::Oracle.

What are you Oracle client and DB versions?

----- Original Message ----- From: "Anand.K.S." <ks.anand80@xxxxxxxxx>
To: <dbi-users@xxxxxxxx>
Sent: Thursday, December 21, 2006 1:17 AM
Subject: utf8 encoding problem


Hello,

I had posted this question in CPAN forum but i was directed here for a
better answer.

Here is the problem I am facing. In the following piece of code I get a
customer name from the database and append a pound symbol to the customer
name and update the same in the database. The NLS_LANG parameter is set to
AMERICAN_AMERICA.WE8DEC (western European character set) When I query the
database to see if the name has been updated correctly I see some garbage
value appended to the name instead of just a pound symbol. Then I did some
research to find out the version oralce DBD version being used is 1.12. I
found some difference between 1.12 and 1.14 relating to unicode
documentation. All I want to know is whether this was a bug in 1.12 which
was fixed in the later version of 1.14 and will an upgrade to 1.14 fix this
problem. Could anyone please confirm me on this? The closer I could get was
to find this link http://search.cpan.org/dist/DBD-Oracle/Changes#___top.
However the work around was to use "use Encoding" (Which is commented out in
the following code) in perl which fixed the problem.

Cheers,

Anand.



use strict;

use encoding 'utf8';

use atadb;

use vars qw($opt_u);

my $db = atadb::connect($opt_u);

my $sql = " SELECT NODE_NAME FROM CUSTOMER_NODE_HISTORY WHERE
CUSTOMER_NODE_ID = 9295370 ";

my $csr = $db->prepare($sql) || ataerr::dbprepare($db);

$csr->execute() || ataerr::dbexecute($db);

my $node_name = $csr->fetchrow; $csr->finish;

$node_name = 'wre'; my $pound = " \xc2\xa3"; print "Pound =>$pound\n";

my $node_name_upper = "\U$node_name\E".$pound; $node_name.=$pound; print
"Node name".$node_name."\n";;

print $node_name_upper."\n"; my $sql1 = "UPDATE CUSTOMER_NODE_HISTORY SET
NODE_NAME = ? , NODE_NAME_UPPERCASE = ? WHERE CUSTOMER + +_NODE_ID = 9295370
";

my $csr1 = $db->prepare($sql1) || ataerr::dbprepare($db); print "Executing
... \n"; #use Encode; #$node_name = encode($ENV{PERL_ENCODING}, $node_name);
#$node_name_upper = encode($ENV{PERL_ENCODING}, $node_name_upper);

$csr1->execute($node_name, $node_name_upper) || ataerr::dbexecute($db);

print "Committing ... \n";

$db->commit || die("commit: ".$db->errstr."\n");

$csr1->finish; $db->disconnect;


.



Relevant Pages

  • Re: VW --> Bianary file into CLOB or BLOB
    ... Page 1252 encoding, which is normal Windows encoding for Western European ... the database as I manage this on both PostgreSQL, Oracle and ODBC ... My outstanding problem was to create a valid ByteArray from no matter ...
    (comp.lang.smalltalk)
  • Re: VW --> Bianary file into CLOB or BLOB
    ... Page 1252 encoding, which is normal Windows encoding for Western European alphabets. ... the database as I manage this on both PostgreSQL, Oracle and ODBC following the documentation. ... My outstanding problem was to create a valid ByteArray from no matter what file as I previously used the ByteArray coming from ImageReader. ...
    (comp.lang.smalltalk)
  • Re: Convertion of Unicode to ASCII NIGHTMARE
    ... deal with Oracle, and I'm not looking for another adventure into ... applications and the database system. ... is to make sure that you know which encoding is used so that if you ... either get plain strings (ie. not Unicode objects) out of the database, ...
    (comp.lang.python)
  • Re: utf8 encoding problem
    ... version/patches/Oracle client system enviornment etc. ... There were a large number of improvements in UTF encoding since 1.12 so my ... The UTF bug like this could be caused by the Oracle cleint or the Oracle ... > name and update the same in the database. ...
    (perl.dbi.users)
  • Multiple SIDs (instances) possible with Oracle 8 (Unix)?
    ... We have a client in South-Korea running an Oracle Database. ... using a characterset KO16KSC5601 ... Here, with our encoding, everything works fine, Korean characters are ...
    (comp.databases.oracle.server)