^M am Ende einer Zeile

Bash, Shell, PHP, Python, Perl, CGI
coolsurfer
Posts: 61
Joined: 2002-05-01 18:16

^M am Ende einer Zeile

Post by coolsurfer »

Hi,

ich hab folgendes Problem. Wenn ich Text auf einer MySQL Datenbank auselsen, kommt es zuweilen vor, dass sich am Ende einer jeden Zeile das Zeichen "^M" befindet. Wenn ich diesen ausgelesenen Text jetzt mit mail() [der Standard php-Funktion] versende passiert folgendes:

1. Server mit sendmail: die ^M sind weg [gut so]
2. Server mit postfix: die ^M bleiben, und "Outlook" dreht durch

hab ich eine Möglichkeit, Postfix zu sagen, er soll die ^M wegkürzen; sendmail scheitn es zu schaffen :-)

coolsurfer
outofbound
Posts: 470
Joined: 2002-05-14 13:02
Location: Karlsruhe City

Re: ^M am Ende einer Zeile

Post by outofbound »

Hi,

Erst gar nicht in die DB reinschreiben! ;)

Das ist eine der Tücken aus der Dos / Unix - Portierungs- Welt.

Am besten die DB komplett updaten und die überflüssigen Zeiichen
(Carriage Return / LineFeed... verwechsel ich immer) raus nehmen.

Dann klappts auch mitm Nachbarn ;)

Gruss,

Out
coolsurfer
Posts: 61
Joined: 2002-05-01 18:16

Re: ^M am Ende einer Zeile

Post by coolsurfer »

Hi,

leichter gesagt als getan :-( Alles was an dieser stelle passiert ist, dass jemand ein HTML-Text-Feld editiert, und ich den Inhalt in die DB schreibe.

Dabei kommt es [manchmal] vor, dass eben jene ^M (anscheinend)gespeichert werden. Gibts denn keine Möglichkeit, das mit Postfix abzufangen ? Die DB umzustellen dürfte ca. 3 Tage dauern; ist zwischenzeitlich 1,8GB gross :-(

coolsurfer
jensih
Posts: 6
Joined: 2003-05-09 17:05
Location: Kassel & Hamburg

Re: ^M am Ende einer Zeile

Post by jensih »

Hallo,
du du ja anscheinend in PHP programmierst, kannst du vor dem Eintragen in deine DB die Zeilenumbrüche entfernen. Dafür gibt es in PHP mehrere Möglichkeiten.
Dann gelangen schon mal keine neuen LineFeeds mehr in die DB.

Wenn du dann dieses hast, könntest du dir auch ein kleines PHP Skrip schreiben, welches einen Datensatz ausliest und entsprechend ändert.
Anschliessend lässt du ihn in die DB zurück schreiben.

Wichtig ist, das wenn du das Skript auf die DB los lässt, dieses nicht automatisch nach 30 sekunden (oder so) abgebrochen wird. Deine DB schein ja recht gross zu sein und es könnte etwas an Server load und auch Zeit kosten.

Ist halt die Frage ob du nur das eine Feld prüfen möchtest. (in anderen Feldern mach der Zeilenumbruch durchaus Sinn, oder?)

J