Avatar billede m-koldsgaard Nybegynder
31. december 2003 - 00:42 Der er 11 kommentarer og
2 løsninger

Content type, charset og hvad ved jeg - txt

Hej

Jeg har lavet noget php, som laver et output, der skal bruges i et word-dokument til noget brevfletning. Det virker næsten fint.

I korte træk gør php-koden så ledes:

header("Content-type: text/txt; charset=ISO-8859-1");
echo "Kolonne1;Kolonne2;Kolonne3;\n";
echo "$var1;$var2;$var3;";


Når man så kommer hen til siden så spørger IE om man vil downloade 'fil.php', og det gør man så.
Hvis man så åbner filen i notesblok ser den sådan ud:

Kolonne1;Kolonne2;Kolonne3;[her er så et firkantet symbol]data1;data2;data3;


Dette virker dog i Word's brevfletning, men den spørger efter 'Tekstkodning'. Dette kan jeg undgå ved at åbne filen med notesblok og så ændre den til:

Kolonne1;Kolonne2;Kolonne3;
data1;data2;data3;

Og så gemme den igen. Men jeg vil gerne undgå begge ting. Altså få php til at outputte det rigtigt med det samme.
Jeg har på fornemmelsen at det har noget med linien
header("Content-type: text/txt; charset=ISO-8859-1");
at gøre, men jeg har ikke rigtigt kunne finde noget bedre.

Nogen der har et svar?
Avatar billede 3xm Nybegynder
31. december 2003 - 00:45 #1
din server sætter sikkert et unix-linieskift ind. Prøv at erstatte \n med et ganske alm. windowslinieskift som du selv laver ved at taste return. så burde du få en fil helt magen til den du selv retter den til i notepad.

=)
Avatar billede 3xm Nybegynder
31. december 2003 - 00:45 #2
det firkantede symbol er et unixlinieskift som windows ikke genkender som tegn og derfor skriver som den dumme firkant.
Avatar billede m-koldsgaard Nybegynder
31. december 2003 - 00:46 #3
Hvordan laver jeg et windowslinieskift i php ?
Avatar billede 3xm Nybegynder
31. december 2003 - 00:48 #4
hehe... som jeg skriver: ved at taste det ind ligesom alle andre tegn. tryk på linieskiftstasten ligesom du trykker på i'et for at skrive et i.

=)
Avatar billede Slettet bruger
31. december 2003 - 00:48 #5
echo "her kommer et linieskift\r\nog det burde forstås af Windows";
Avatar billede Slettet bruger
31. december 2003 - 00:49 #6
Et Mac-linieskift er \r
Et Unix-linieskift er \n
og et Windows-linieskift er \r\n
Avatar billede 3xm Nybegynder
31. december 2003 - 00:50 #7
altså: i stedet for

echo "Kolonne1;Kolonne2;Kolonne3;\n";
echo "$var1;$var2;$var3;";

så

echo "Kolonne1;Kolonne2;Kolonne3;
$var1;$var2;$var3;";

hvor du har lavet linieskiftet med din egen, windowslinieskiftstast (går ud fra du bruger windows?)

=)
Avatar billede 3xm Nybegynder
31. december 2003 - 00:51 #8
sandbox: så vidt jeg har forstået er \n ikke nødvendigvis et unix-linieskift. det afhænger af den serveren. hvis den kører på windows bliver \n til et win-skift.

=)
Avatar billede m-koldsgaard Nybegynder
31. december 2003 - 00:54 #9
"\r\n" - Var lige hvad jeg skulle bruge... Tak til jer begge to...
Avatar billede 3xm Nybegynder
31. december 2003 - 00:55 #10
selv tak.

=)
Avatar billede m-koldsgaard Nybegynder
31. december 2003 - 00:57 #11
Har lige testes scriptet med "\r\n" på en Apache på win og en på unix... Det giver det samme...
Avatar billede Slettet bruger
31. december 2003 - 01:00 #12
\n er standardmetoden at skrive ASCII tegn nummer 10, som hedder LF (Linefeed)
\r er standardmetoden at skrive ASCII tegn nummer 13, som hedder CR (Carriage Return)

De to tegn kommer fra gammel tid, hvor tekst kom ud på skrivemaskiner, som havde en kode til at sende printhovedet tilbage til starten af linien og en anden til at skubbe papiret en linie frem.

Og det er altså to forskellige tegn, hvor Windows (og DOS) bruger begge til linieskift.

Hvis PHP videresender \r\n, når man kun giver den et \n vil jeg kalde det en bug. (Hvis det kan sættes i en config, kan jeg måske overtales til at kalde det en feature.)
Avatar billede 3xm Nybegynder
31. december 2003 - 01:07 #13
sandbox: du har nok ret. jeg synes bare jeg har oplevet forskellige ting med \n afhængigt af hvad serveren kørte på. der er ikke umiddelbart noget i php.ini om hvilken slags linieskift den vil bruge.

=)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester