Seite 1 von 1

[solved] PHP: system() mit Zeichensatzproblem

Verfasst: 05.06.2005 17:20
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.

Verfasst: 05.06.2005 17:27
von Pyramide
Warum schreibst du nicht direkt mit [php:fwrite] in die Datei?

Verfasst: 05.06.2005 17:36
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.

Verfasst: 06.06.2005 01:20
von Sujao
Habs! Die funktion utf8_decode() machts.