Hi, a few days ago I got a note dealing with character set problems (with German umlauts). (I didn't counter check the info)
In a Windows environment you have to cope with at least 4 character sets. 1. internally WinNT uses UCS-2 (2 bytes) Win2000 uses UTF16 (2 or 4 bytes) 2. graphical apps may use something like ISO Latin 1 3. a German DOS prompt uses we8pc850 4. your HTML browser may use UTF8 This also affects database accesses. You have to consider your NLS_LANG registry entry, for example AMERICAN_AMERICA.WE8ISO8859P1 or GERMAN_GERMANY.WE8ISO8859P1 (see: v$nls_valid_values, v$nls_parameters, nls_XXXparameters, where XXX in (database,instance,session)) If you use graphical apps (SQLPLUSW.exe, notepad, ...) you may get the correct output, according to your NLS_LANG On your DOS prompt you may have to overwrite the registry default: C:\> set NLS_LANG=american_america.we8pc850 to process correctly your German umlauts in an SQL script. On Unix you also may have to set your NLS_LANG environment wariable (and maybe ORA_NLS...) cu, --------------------------------------------------------- Landeshauptstadt M�nchen Direktorium - AFID 3.3 - Oracle DBA C.A. Merz ----- Original Message ----- From: "prashant shelar" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]> Sent: Wednesday, November 03, 2004 5:33 AM Subject: RE: :Oracle unicode problem > Hi, > > I already set NLS_LANG=.UTF8 in .bash_profile. > > The data I am reading from $file which is in UTF-8 format. > If I do not use encode() function then the data inserted in the database is > "inverted question mark" for any japanese character. > > > If I ran the code without encode() function on windows 2000 with Active Perl > 5.8.4.810 installed then I am not having any problem. But the same code is > not running on sun solaris box. It is inserting "Inverted question mark in > Database" > > Is DBD::Oracle uses any OS level functions ? My solaris version is 2.8 > > > Thanks, > Prashant Shelar > > > > From: "Susan Cassidy" <[EMAIL PROTECTED]> > To: "'prashant shelar'" <[EMAIL PROTECTED]> > Subject: RE: :Oracle unicode problem > Date: Tue, 2 Nov 2004 08:59:58 -0800 > > Are you setting the environment variable NLS_LANG to something with UTF8 in > it? E.g.: .UTF8 > > Also, if your data is already UTF8, you may be encoding it again and causing > a problem. > > Susan Cassidy > > > -----Original Message----- > > From: prashant shelar [mailto:[EMAIL PROTECTED] > > Sent: Tuesday, November 02, 2004 7:38 AM > > To: [EMAIL PROTECTED] > > Subject: DBD::Oracle unicode problem > > > > > > Hi , > > > > I am having Oracle 9i release2 database with following details. All > > database String columns are VARCHAR2 > > > > database_charset =AL32UTF8 > > national_charset =AL16UTF16 > > The database server and perl scripts are running on Sun Solaris 2.8 > > box. > > Perl Version = 5.8.5 > > DBI version = 1.45 > > DBD::Oracle version = 1.16 (I downloaded from > > > > http://homepage.eircom.net/~timbunce/DBD-Oracle-1.16-rc7-20040826.tar.gz) > > > > I am inserting the Japanese characters using Perl script running on > > same > > DB box. When I retrive the same data using SQLPLUS spool command the many > > characters are not matching. Only some characters are matching. > > > > For e.g. If I having given U+3044 character to insert in database. If > > I > > spool if I am getting the > > character U+307F. > > > > Any Help is greatly Appretiated. > > > > The code snippet is as below. > > > > my $dbh = DBI->connect("dbi:Oracle:$sid", $uid, $pwd, { > RaiseError=>1, > > AutoCommit=>1 }); > > > > open (INFILE, $file) ; > > while (my $line = <INFILE>) { > > > > my @data = split(/\|/, $line); > > my $sql = "INSERT INTO table (col1, col2) values > > (encode("utf8",$data[1]), encod("utf8",$data[2]) ); > > > > $dbh->do($sql); > > } > > > > $dbh->disconnect; > > > > _________________________________________________________________ > > The all-new MSN Mesenger! Get the coolest emoticons. > > http://server1.msn.co.in/sp04/messengerchat/ Share more of yourself! > > _________________________________________________________________ > Send Money to India! Get a Mithai box. > http://creative.mediaturf.net/creatives/icicibank/TOL.htm Win a FREE holiday > in Goa. >
