Avatar billede jokeren25 Nybegynder
04. juli 2006 - 11:36 Der er 12 kommentarer og
1 løsning

Webformular omsætter bogstaver til tegn

Hej eksperter,

når min webformular returnere mails skriver den ø i stedet for ø og så fremdeles.

Skyldes dette en server indstilling eller er det min kode der som skaber problemerne og hvordan kan jeg løses dette?

På forhånd tak!

Min formular ser således ud: (kontakt_os.php)

<?php

$besked = $_REQUEST["besked"];
$adr=$_REQUEST["adr"];
$navn=$_REQUEST["navn"];
$firma=$_REQUEST["firma"];

$epost="sales@zyxel.dk";

mail($epost,
    "Mail fra web-formular",
"Navn: $navn\n
Firma: $firma\n
E-mail: $adr\n

Sporgsmaal:
$besked\n",
"From: $adr\r\nReply-to: $adr");

echo "Tak for din henvendelse. Vi vender tilbage hurtigst muligt.";


?>

og formen:

<form action="mail_kontakt_os.php" method="post">Navn:<br>
<input type="text" size="30" value="" name="navn"> <br>
Email:<br>
<input type="text" size="30" value="" name="adr"><br>
Firma:<br>
<input type="text" size="30" value="" name="firma"><br>
Spørgsmål:<br>
<textarea name="besked" rows="10" cols="80">&nbsp;</textarea> <br>
<br>
<input type="submit" value="Send"> </form>
Avatar billede iss Novice
04. juli 2006 - 11:49 #1
Sæt det rigtige tegnsæt i din head. For browserne tror du kører UTF. Ellers så oversætter din server bare ikke så godt fra UTF.
Avatar billede jokeren25 Nybegynder
04. juli 2006 - 12:08 #2
Min header ser således ud:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
Avatar billede Slettet bruger
04. juli 2006 - 13:33 #3
Du skal også sætte content-type og encoding på din mail.
Avatar billede jokeren25 Nybegynder
04. juli 2006 - 14:44 #4
Beklager jeg er newbie, men hvordan sætter jeg content-Type ind på afsendelsen af mailen?
Avatar billede Slettet bruger
04. juli 2006 - 14:50 #5
Ved at tilføje den til ekstra-headers-argumentet til mail()-kaldet:

mail($epost,
    "Mail fra web-formular",
"Navn: $navn\n
Firma: $firma\n
E-mail: $adr\n

Sporgsmaal:
$besked\n",
"From: $adr\r\nReply-to: $adr\r\nContent-Type: text/plain; charset=utf-8");
Avatar billede jokeren25 Nybegynder
04. juli 2006 - 15:27 #6
Tak for hjælpen men den skriver stadig æ,ø og å som æ,ø og Ã¥ selvom den skriver det her i toppen af mailen når jeg modtager den:

-->Content-Type: text/plain; charset=utf-8
Return-Path: apache@singha.xxx.dk
X-ORFilter: mail checked by ORFilter Service 5.0.2.38529 - www.martijnjongen.com/orfilter
X-ORFilter: Total score = 0
X-OriginalArrivalTime: 04 Jul 2006 13:13:24.0889 (UTC) FILETIME=[A1A4D890:01C69F6B]

Er det en serverinstilling der gør at den ikke fortolker det rigtigt?
Avatar billede iss Novice
04. juli 2006 - 20:17 #7
Prøv med <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
Avatar billede Slettet bruger
05. juli 2006 - 02:09 #8
Nu siger du "i toppen af mailen". Mener du i toppen af selve mailen eller i headers? Hvis det kommer i selve mailen er det en fejl.

Men ellers kan du som iss foreslår vende om og bruge iso-8859-1 til både siden og mailen. Det vigtigste er bare, at du enten bruger samme tegnsæt begge steder eller, hvis du bruger forskelligt tegnsæt, får konverteret korrekt imellem dem. De underlige tegn kommer, når et program prøver at vise utf-8 som om det var iso-8859-1.

I mail er det (så vidt jeg husker) defineret, at hvis ikke andet angives, så er indholdet iso-8859-1.
Avatar billede jokeren25 Nybegynder
05. juli 2006 - 15:18 #9
Den skriver det i selve mailen som jeg modtager. Altså ikke headeren. Nu har jeg sat iso-8859-1 i headeren php siden, men jeg har stadig problemet med æ,ø og å?

Kan man skrive iso-8859-1 ind i afsendelsen af mailen så den kommer med ind i headeren på selve mailen jeg modtager, eller er det mig der kokser totalt rundt i det?
Avatar billede Slettet bruger
05. juli 2006 - 15:52 #10
Så er der et eller andet galt med den måde din sendmail (eller hvis du kører Windows: din smtp-server) fortolker headers på.

Jeg går ud fra at From:-linien ikke kom med i selve mailen. Så skal du nok lave alle \r\n i den streng om til bare \n og så burde den sende headers korrekt.

Og så vil jeg egentlig anbefale at lave det således, så det er lettere at se, hvilken parameter, som gør hvad:

$emnelinie = "Mail fra web-formular";

$indhold = "Navn: $navn\n";
$indhold .= "Firma: $firma\n";
$indhold .= "E-mail: $adr\n"
$indhold .= "Sporgsmaal:\n";
$indhold .= "$besked\n";

$headers = "From: $adr\n";
$headers .= "Reply-to: $adr\n";
$headers .= "Content-Type: text/plain; charset=utf-8");

mail($epost, $emnelinie, $indhold, $headers);
Avatar billede jokeren25 Nybegynder
06. juli 2006 - 12:57 #11
Så virker det sku!

Tak for hjælpen!

Læg et svar så er der points!
Avatar billede jokeren25 Nybegynder
06. juli 2006 - 13:20 #12
Skal for god ordens skyld skrive skrive at i denne linie rettede jeg plain til html;

$headers .= "Content-Type: text/plain; charset=utf-8");

Endnu en gang tak for hjælpen!
Avatar billede Slettet bruger
06. juli 2006 - 19:05 #13
Når du sender som html, kommer hele skidtet så ikke i en klump uden afsnit og den slags? (Hvis du altså ikke har rettet indholdet af selve mailen til rent faktisk at være html.)

Og her er et svar. Men vent lige på iss også.
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

IT-JOB

Capgemini Danmark A/S

AI/Data Engineer

Rambøll Management Consulting

Senior Software Engineer

Politiets Efterretningstjeneste

Teknisk IT-sikkerhedsspecialist i PET

Everllence

Data Engineer