Permalänk
Medlem

Få med å ä ö från formulär

Har ett vanligt formulär som mailar iväg information via php-script men om man fyller i något med å,ä,ö så blir det bara massa knas-tecken när jag får mailet. Har testat det mesta jag hittat ute på nätet med encoding... Vad skall jag göra. Skriver med en förkortning av mitt formulär och script... Använder thunderbird som mail-program.

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<FORM name="bestallning" method="post" action="test.php">
<p>
<INPUT type="text" name="fnamn" size="20">
<font color="#FF0000">*</font> Förnamn
</p>
<p>
<input type="submit" name="skicka" value="Skicka">
</p>
</FORM>

test.php

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<?php
$email = "Förnamn: ".$_POST['fnamn']."\n\r";
mail( "minmail@minmail.se", "Ärende", $email, "Beställning");
?>

Permalänk
Medlem

Blir bara å,ä och ö knas-tecken? Du kör förmodligen med fel teckenkodning.. t.ex. så verkar din sida köra med UTF-8 och din läsare kör då kanske med ISO-latin.

edit: om jag har rätt så kan du testa att ändra på sidan till ISO-8859-1

Permalänk
Medlem

Jag testade med ISO-8859-1 och det blev ingen skillnad... Kör med Firefox nyaste webbläsare men det blir ingen skillnad om jag kör IE

Permalänk
Medlem

$headers = 'Reply-To: minmail@minmail.se' . "\r\n" . 'X-Mailer: PHP/' . phpversion() . "\r\n" . 'Content-type: text/html; charset=iso-8859-1' . "\r\n" mail("minmail@minmail.se", "Ärende", $email, "Beställning", $headers);

Prova det, som du ser lade jag till lite header info i mailet. Har du provat olika mailklienter? Olika klienter läser mail på olika sätt, prova en annan och se om du får samma fel. I värsta fall kan du göra om åäö tecken till html, t.ex. ö = ä

Visa signatur

Moderkort: ASUS P7P55D-E Pro, Grafikkort: Gigabyte HD6950 2GB, Processor: Intel i5 760 2,8GHz (3,6 GHz), Kylning: Noctua NH-U12P SE2, RAM: Corsair 4GB (2x2048MB) 1600MHz DDR3, Hårddisk: 1TB Samsung Spinpoint, Nätaggregat: Fractal Design Tesla 650W 80+, Chassi: Cooler Master HAF 912 Plus

Permalänk
Medlem

test.php <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <?php $email = "Förnamn: ".$_POST['fnamn']."\n\r"; mail( "minmail@minmail.se", "Ärende", $email, "Beställning"); ?>

testa att köra $_POST['fnamn'] genom utf8_encode() eller utf8_decode() det har fungerat för mig.

Visa signatur

Asus Zenbook UX32VD-R4002V.

Permalänk
Medlem

Tydligen funkar det bättre i Outlook.... (och det här skiten har man spenderat nån timme på nu)

Ny fråga då

Kan man ändra i thunderbird så det funkar där också?

Permalänk
Medlem

Du måste sätta encoding i ditt mail. Thunderbird failar att läsa av vilken encoding det är mest troligtvis.

http://php.net/manual/en/function.mail.php

<?php $to = 'nobody@example.com'; $subject = 'the subject'; $message = 'hello'; $headers = 'From: webmaster@example.com' . "\r\n" . 'Reply-To: webmaster@example.com' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); mail($to, $subject, $message, $headers); ?>

Så du behöver typ lägga till detta: under $headers
Content-Type: text/plain; charset=UTF-8
eller
Content-Type: text/html; charset=UTF-8
om du skickar HTML

Och jag rekommenderar att du fortsätter att använda UTF-8 gör ditt skript helt o hållet framtidssäkert.

Visa signatur

Speldator: Ryzen 7800X3D, 64GB DDR5, RTX 3070
Server: i7-8700k, 32GB DDR4, RTX2080
Steam deck + de fiesta konsoller.

Permalänk
Medlem

Många tack. Nu funkar det t.o.m. i Thunderbird