Mailinglisten-Archive |
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