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