Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re^10: Japanese character in Linux

by Anonymous Monk
on Jul 11, 2011 at 13:53 UTC ( #913705=note: print w/ replies, xml ) Need Help??


in reply to Re^9: Japanese character in Linux
in thread Japanese character in Linux

$sSQL = " select japanese_longname, \n"; $sSQL .= " japanese_shortname \n"; $sSQL .= " from <table name> \n"; $sSQL .= " where instrument_id = '1301' \n"; $sSQL .= " and instrument_type = 'ST' \n"; #print("Sql i d $sSQL\n"); $dbFOX_sth=$dbFOX->prepare($sSQL); $dbFOX_sth->execute(); if ( @row = $dbFOX_sth->fetchrow_array ) { foreach ( @row) { $_ = Encode::decode_utf8( $_ ); } ( $sInstrumentNameJ, $sInstrumentShortJ ) = @row;

Here the values stored in $sInstrumentNameJ,$instrumentShortJ are passed to oracle stored procwhich is inserting into Nvarchar2 datatype columns. When we hardcode values with Ascii data like "ABC" it works fine , but for japanese data it comes as junk


Comment on Re^10: Japanese character in Linux
Download Code
Re^11: Japanese character in Linux
by Anonymous Monk on Jul 11, 2011 at 14:01 UTC

    When we hardcode values with Ascii data like "ABC" it works fine , but for japanese data it comes as junk

    Hardcode it using \N{U+0104}?

Re^11: Japanese character in Linux
by andal (Hermit) on Jul 11, 2011 at 23:30 UTC

    Well, I would consider using "Encode::decode_utf8" very wrong here. At least from your previous messages it followed, that the data inserted into database was in UTF-16 encoding, so when you apply "decode_utf8" function to it, you create a mess and nothing else. Of course this function does not hurt any of pure ASCII data.

    You should use "Encode::decode("UTF-16", $_)".

      We have resolved the issue Following changes were done in perl Loader to handle Japanese. Env variable setting :

      $ENV{'NLS_NCHAR'} = 'AL32UTF8';

      Encoding from Shift JIS to UTF8 after data is fetched from Sybase:

      Encode::from_to($sInstrumentNameJ, "shiftjis", "utf8"); #added for te +sting Encode::from_to($sInstrumentShortJ, "shiftjis", "utf8"); #added for t +esting

      Binding Japanese data parameters to be passed as below

      use DBD::Oracle qw(:ora_types ORA_OCI SQLCS_NCHAR ); $dbGOSTky_sth->bind_param(":sInstrumentNameJ",$sInstrumentNameJ,{ora_c +sform => SQLCS_NCHAR}); $dbGOSTky_sth->bind_param(":sInstrumentShortJ",$sInstrumentShortJ,{ora +_csform => SQLCS_NCHAR});

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://913705]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (5)
As of 2015-07-06 04:35 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (70 votes), past polls