[solved] PHP: system() mit Zeichensatzproblem

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
Sujao
Mitglied
Beiträge: 296
Registriert: 25.12.2003 03:56
Wohnort: Stuttgart
Kontaktdaten:

[solved] PHP: system() mit Zeichensatzproblem

Beitrag von Sujao »

Hallo PHP-Experten! :)

Ich hab fast keine Ahnung von PHP und modifizier nur ein Script und hab da ein Problem.
Es gibt eine von mir geschriebene Zeile mit

Code: Alles auswählen

system("echo '$this->xxx' > /tmp/test");
Die Variable xxx wird geechoet und in die Datei /tmp/test umgeleitet. Das funktioniert einwandfrei. Es gibt nur ein Problem mit den Sonderzeichen "§" und "€". Taucht eines davon in xxx auf wird es in der Datei als zwei Zeichen gespeichert. Ich bin ziemlich sicher, dass die Shell, die dieses Kommando aufnimmt den Unicode nicht versteht und das eine 2byte lange Unicodezeichen als zwei 8859-1-Zeichen interpretiert. Deswegen werde aus einem Zeichen, zwei Zeichen.

Wie kann ich sowas umgehen? Wie kann ich PHP zwingen den system()-Aufruf in 8859-1 zu machen. gibt es vielleicht eine funktion in der Art convertTo8859() ?

Ich hab auf dem Webserver Rootzugriff, also wenn es an einer falschen Konfiguration liegt, kann ich das auch beheben.
Zuletzt geändert von Sujao am 06.06.2005 01:21, insgesamt 1-mal geändert.
There are no passangers on Spaceship Earth, we are all the crew !
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Warum schreibst du nicht direkt mit [php:fwrite] in die Datei?
KB:knigge
Benutzeravatar
Sujao
Mitglied
Beiträge: 296
Registriert: 25.12.2003 03:56
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von Sujao »

Das war eigentlich nur ein Test um zu sehen wie die shell reagiert oder bzw. wie sie die Variable "sieht". Ich muß in Wirklichkeit die "htpasswd2" mit dem xxx Parameter aufrufen. Da tritt das gleiche Problem auf. Die "htpasswd2" bekommt als Parameter den falsch dekodierten Inhalt von $this->xxx.
There are no passangers on Spaceship Earth, we are all the crew !
Benutzeravatar
Sujao
Mitglied
Beiträge: 296
Registriert: 25.12.2003 03:56
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von Sujao »

Habs! Die funktion utf8_decode() machts.
There are no passangers on Spaceship Earth, we are all the crew !
Antworten

Zurück zu „Coding & Technik“