Axel Richter: Probleme mit Encoding auf Linux

Beitrag lesen

Hallo,

Runtime.getRuntime().exec(php_command).waitFor();

das php_command sieht laut Java Konsole so aus:

/usr/bin/php-cgi /usr/local/tomcat[...]/check_file.php /usr/local/tomcat/[...]/2006_8_26_21633789_outfile.csv ';' 1 0 0

Wenn es so aussieht, dann wird versucht /usr/bin/php-cgi mit den Parametern

/usr/local/tomcat[...]/check_file.php /usr/local/tomcat/[...]/2006_8_26_21633789_outfile.csv ';' 1 0 0

aufzurufen.

Was das Ganze macht soll hier nicht zur Debatte stehen, nur das an dieser Stelle ';' ein CSV Delimiter (ein Semikolon) an das php Programm (das übrigens von einem Projektkollegen geschrieben wird)  übergeben werden soll. PHP  nimmt das Ganze auch, wenn ich den String in die Linux Konsole paste,

Diesen String, den Du oben angegeben hast?

wenn das Servlet den Befehl mit obigem Kommando ausführt, will das php Programm den Delimiter anscheinend nicht verstehen und liest nur die erste Zeile des CSV Files.

Kann das PHP-Script check_file.php nicht zunächst mal testweise ausgeben, welche Parameter es übergeben bekommen hat?

Ich habe mal nachgesehen: Mein Linux hat locale en_UTF-8 in der php.ini steht z.B. bei iconv:

Das encoding kann hier kaum schuld sein. Alle Zeichen in Deinem Programmaufruf sind ASCII-Zeichen. Die haben sowohl in ISO-8859-1 als auch in UTF-8 den selben code. Das ";" ist z.B. Hex 3B.

viele Grüße

Axel