Ok Ich habe ein Problem. Ich habe einen Linux-Webserver (RHEL 4 mit Apache 2), in dem eine Anwendung untergebracht ist. Teil dieser Anwendung ist eine Reihe von PHP-Skripten. Ich habe ein Skript erstellt, das einige Formularvariablen akzeptiert und dann eine Datei an den Benutzer herunterlädt. Hier si der Code:Fix Datei Endcodierung beim Herunterladen einer Datei von Linux nach Windows in PHP
Das alles funktioniert gut, und die Datei wird heruntergeladen. Aber es gibt ein Problem. Diese Dateien werden von der Linux-Box auf eine Windows-Maschine (ALWAYS) heruntergeladen. Das Problem ist die Kodierung. Wenn Sie die Datei auf der Linux-Box betrachten, wird der gesamte Text ausgerichtet und alle Spalten sehen gut aus. (Die Dateien sind nur flache Textdateien). Wenn die Datei jedoch in das Windows-Feld heruntergeladen und in Notepad geöffnet wird, ist die Datei vollständig verschmutzt und nichts ist ausgerichtet. Sie sehen auch seltsame Zeichen (die, die wie eine Box aussehen, aber das ist nur die generische Darstellung für den unbekannten Kennzeichner). Wenn diese Datei in ein anderes Programm importiert wird, funktioniert sie nicht.
Allerdings, wenn ich die Datei nach oben in WordPad öffnen, den ganzen Text korrekt aussehen. Wenn ich es von Wordpad speichere, wird es korrekt importiert und in Notepad korrekt angezeigt. wäre toll
Ich habe nicht viel know auf Dateicodierung, so dass alle Informationen darüber, wie ich an den Benutzer vor dem Senden zum Herunterladen der Datei kodieren kann.
Ich habe versucht, die readfile($fullPath);
mit dem Ersetzen: Dank
$handle = @fopen($fullPath, "r");
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle);
$buffer = str_replace('\n', '\r\n', $buffer);
echo $buffer;
}
fclose($handle);
}
!
Für den Fall, jemand kommt hier mit ähnlichen Problemen: wenn Zeilenumbrüche in Kisten in Notepad/Editor drehen, aber gut aussehen in Wordpad, dann ist es eine Frage der nicht mit Windows Zeilenumbrüchen (aus irgendeinem Grund ist Notepad ziemlich anal über Zeilenumbrüche, während Wordpad es richtig macht). Wenn andere Zeichen aussehen, haben Sie wahrscheinlich ein Codierungsproblem (z. B. UTF-8, das als Windows-1252 oder US-ASCII behandelt wird). –