phpbar.de logo

Mailinglisten-Archive

[php] Re: php oracle character usw.

[php] Re: php oracle character usw.

Joerg Behrens behrens_(at)_noell.de
Tue, 21 Mar 2000 17:24:45 +0100


From: Thomas Fromm <tfromm_(at)_cs.uni-potsdam.de>
> Subject: [php] oracle character usw.

> ist jetzt nicht wirklich off topic, weil das problem nur bei php aufttaucht.
> also folgendes, ich hab bei oracle(8.1.5) und beim webserver auch bei sqlplus
> die character werte auf german_germany.WE8DEC gesetzt. erst ging es nciht bei
> sqlplus, nachdem ich dort die umgebungsvariable gesetzt hatte (NLS_LANG)
> konnte ich dort äö usw einfügen udn auslesen. nur bei php gings nicht, dort war
> trotz setzen der umgebungsvariable im apache und ncohmal mit putenv nix zu
> machen, er traegt einfach kein umlaute bzw soderzeichen ein :-/
> weiss da jmd rat ?
> 
> eine andere sache ist das einfuegen von binaerdaten udn das auslesen.
> ich wuerde gern mittels eines sqlstatements binaerdaten einfuegen und auslesen
> koennen, moechte aber nciht jedesmal eine neue procedure (create or replace
> procedure xyz ...) erzeugen, sondern wuerde gern einer bestehenden nur
> dateinamen oder variableninhalt uebergeben und die DB speichert das denn
> (zB insert_img("/tmp/bla") oder sowas)
> 
> kann mir da jmd weiterhelfen bzw. hat jmd beispielcode fuer dafuer ?


Also zum Zeichensatz.
Wenn ich was falsches sage schlagt mich nur... Der Zeichensatz wird
einmal auf dem Server difiniert (bei uns uebrigens "WE8ISO8859P1") und
davon getrennt fuer den Client. Das heist du kannt mit dem Client
soviele Zeichen (auch deine Umlaute) rein schreiben in die Tabellen wie
du willst.. der Server speichert sie mit *seinem* Datensatz ab. Das
irritiert natuerlich beim Auslesen.. du bekommst halt scheinbar die
Hyroglyphen zurueck. Setze also Client und Server auf ein und denselben
Zeichensatz.

Ansonnsten hilft die Convertfunktion von Oracle z.b

"SELECT
ma.MASCH_ID,ma.BILD_ID,AUSGEGEBEN,ma.ZUBL_ID,convert(BENENNUNG,'WE8PC850','WE8ISO8859P1')
FROM wpv.maschine ma,wpv.maschine_gruppe grp WHERE ma.masch_id =
grp.masch_id and ma.masch_id = $MASCH_ID";

Unbedingt im Manual nachschauen... convert funktioniert nur mit Strings
oder so und somit muss man halt jedes Feld genau angeben.

Mit dem setzten von NLS_LANG in PHP-Scripten hab ich schlechte
Erfahrungen gemacht. Der Client zeigt sich in der Regel unbeeindruckt
von den Angaben die ich im Script gesetzt hatte. Obwohl das in vielen
Beispielscripten so gemacht wird. Ich setze NLS_LANG global beim starten
des Indianers in dem ich alle fuer Oracle noetigen Environmentvariable
in der apachectl eintrage wie z.B

     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

Bei deinem anderem Problem kann ich nicht helfen.. ich hab nicht genau
verstanden wo da dein Problem liegt, bzw. ich lege meine Binaerdatein
bevorzugt im Dateisystem ab.


Gruss
Joergt Behrens

ps: Sorry fuer die spaete Antwort (Urlaub ist was schoenes..:)

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


php::bar PHP Wiki   -   Listenarchive