phpbar.de logo

Mailinglisten-Archive

[php] Re: Deutscher Zeichensatz bei Oracle

[php] Re: Deutscher Zeichensatz bei Oracle

Joerg Behrens behrens_(at)_takenet.de
Tue, 09 May 2000 12:50:34 +0200


> From: "Dario Bagnoli (SAT.1 Mainz)" <dario.bagnoli_(at)_sat1.de>
> ich nutze eine Oracle8-Datenbank und versuche Oracle klar zu machen,
> deutsche Datensätze zurückzuliefern. Unter SQL-Plus funktioniert dies.
> Der Zugriff über PHP liefert jedoch standardmäßig den englischen
> Zeichensatz.
> Während nun
>           PutEnv("ORACLE_DOC=/oracle/doc");
>           PutEnv("ORACLE_HOME=/oracle8");
>           PutEnv("ORACLE_SID=.......");
> klappt, führt nun die Zeile
>           PutEnv("NLS_LANG=GERMAN_AMERICA.WE8ISO8859P1");
> dazu, daß kein anschließender Datenbank Login mehr möglich ist
> (Ora_Logon).
> Diese Parameter ist jedoch im Environment des Datenbank-Users notwendig
> und unter UNIX auch so gesetzt.
> Unter PERL führt das Setzen genau dieses Parameters auch zum gewünschten
> Ziel (!). PHP 3.0.15 scheint das weniger zu interessieren.
> Hmmm ?
> Vielleicht dem Webserver klarmachen (Apache 1.3.12) ??

Also ich habe schlechte Erfahrungen (es klappte halt nicht) mit putenv()
gemacht und finde es schon erstaunlich das dein
PutEnv("ORACLE_DOC=/oracle/doc") usw. funktioniert. An "NLS_Lang" bin
ich auch erst gescheitert zumal es in vielen Beispielscripts so gemacht
wird.

Folgendes Hilft und ist meines erachtens auch ganz sinnvoll. Erstelle
eine lokale Datei namens /usr/local/oracle.env (natuerlich mit deinen
Werten!)
  	     
     # Oracle 8.0.5.1
     export ORACLE_SID=ORCL
     export ORACLE_TERM=vt220
     export ORACLE_BASE=/opt/oracle
     export ORACLE_HOME=$ORACLE_BASE/product/8.0.5.1
     export CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip
     export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/jdbc/lib
     export PATH=$PATH:/bin:/usr/bin:/usr/local/bin:$ORACLE_HOME/bin
     export TMPDIR=/var/tmp
     export NLS_LANG=GERMAN_GERMANY.WE8ISO8859P1 

fuer deinen Oracleuser und sonstige Sachen koenntest du dann ueber den
Eintrag:

     # ORACLE-Variablen belegen
     if test -f /usr/local/oracle.env; then
       . /usr/local/oracle.env
     fi

in .bashrc bzw. .profile Einfuegen.

Das gleiche klappt natuerlich auch im Script "apachectl" das unter
/path/to/apache/bin liegt.


Gruss
Joerg

ps: sollte der Server eine andere Sprache (Zeichensatz) fuer die DB
haben als dein Client hilt evtl die Convertfunktion von Oracle.
Bsp:
"SELECT spalte1,convert(spalte2,'WE8PC850','WE8ISO8859P1') FROM table"

und mit dem 8er Client koenntest du doch auch die OCI anstelle der ORA
Funktionen nehmen.

-- 
Key fingerprint =  92 7D E0 A6 CF AE EC 32  14 28 EF 0D 57 2A 88 5B
----------------------------------------------------------------------
TakeNet GmbH					Mobil: 0171/60 57 963			
D-97080 Wuerzburg				Tel: +49 931 903-2243				
Alfred-Nobel-Straße 20				Fax: +49 931 903-3025


php::bar PHP Wiki   -   Listenarchive