Just nu i M3-nätverket
Gå till innehåll

Mailformulär och åäö


Benharkar
 Share

Rekommendera Poster

En kanske enkel fråga från en nybörjare men ändå....

Har ett mailformulär som avänder formmail.php

Det fungerar utmärkt.  :)

men....

När jag skickar det till min mail på One.com visas svenska tecken

Byter jag adress och skickar det till Hotmail visas svenska tecken.

Men skickar jag det till One som vidare befodrar det till Hotmail visas herioglyfer i.s.f. åäö

 

Vet någoan var felet kan vara:

Mailformuläret, One, Hotmail eller något annat?

(One.com påstår att de aldrig haft liknande problem och att felet inte kan finnas där)

Länk till kommentar
Dela på andra webbplatser

Det där med teckenkodningar är en jättestor fallgrop som alla som pysslar med någon slags utveckling kommer att trilla i minst en gång i sin karriär.

 

Enkelt uttryckt så finns det flera olika sätt att representera skrivna tecken i en dator och alla är inte kompatibla med varandra. Så man har tagit fram ett system som heter UTF-8 som skall göra det enkelt för utvecklare. Och oftast är det så, förutsatt att alla använder det.

 

Först se till att din php-sida är skriven i UTF-8, det får du kontrollera i din editor dom kan göra det lite annorlunda så det är svårt att säga exakt hur du gör.

 

Sen vill du se till att din php-sida berättar för browsern att den är UTF-8 och det gör du genom att skicka ut en http-header.

header('Content-type: text/html; charset=utf-8');

Nu borde browsern vara inställd på UTF-8 och text som skickas in kommer vara i korrekt format.

 

Sen kan det vara så att du i din mail-funktion måste berätta för mailet att det ska vara UTF-8. Nu är jag inte någon expert på php och vet inte riktigt hur du gjort för att skicka mail, men jag hittade detta exempel efter en snabb sökning.

<?php
function mail_utf8($to, $from_user, $from_email,
                                             $subject = '(No subject)', $message = '')
   {
      $from_user = "=?UTF-8?B?".base64_encode($from_user)."?=";
      $subject = "=?UTF-8?B?".base64_encode($subject)."?=";

      $headers = "From: $from_user <$from_email>\r\n".
               "MIME-Version: 1.0" . "\r\n" .
               "Content-type: text/html; charset=UTF-8" . "\r\n";

     return mail($to, $subject, $message, $headers);
   }
?>

Och det borde förhoppningsvis räcka. Du har berättat för browsern att du vill ha utf-8 och du har berättat för mailet att det är utf-8 som gäller. Du borde förhoppningsvis inte ha några problem längre med å, ä och ö och som bonus så borde även kinesiska, japanska och arabiska fungera tokfint.

Länk till kommentar
Dela på andra webbplatser

Det finns ett sätt att ändra kodningen på det mottagna emailet, Om du läser dina email i MS Outlook så har du en knapp längst till höger som heter kodning .

 

Där ändrar du till Utf-8 och krumelurerna försvinner (du måste öppna emailet för att knappen ska komma upp) .

 

Det finns säkert liknande för andra emailklienter.

Länk till kommentar
Dela på andra webbplatser

Postad (redigerade)

Det där med teckenkodningar är en jättestor fallgrop som alla som pysslar med någon slags utveckling kommer att trilla i minst en gång i sin karriär.

 

Enkelt uttryckt så finns det flera olika sätt att representera skrivna tecken i en dator och alla är inte kompatibla med varandra. Så man har tagit fram ett system som heter UTF-8 som skall göra det enkelt för utvecklare. Och oftast är det så, förutsatt att alla använder det.

 

Först se till att din php-sida är skriven i UTF-8, det får du kontrollera i din editor dom kan göra det lite annorlunda så det är svårt att säga exakt hur du gör.

 

Sen vill du se till att din php-sida berättar för browsern att den är UTF-8 och det gör du genom att skicka ut en http-header.

header('Content-type: text/html; charset=utf-8');

Nu borde browsern vara inställd på UTF-8 och text som skickas in kommer vara i korrekt format.

 

Sen kan det vara så att du i din mail-funktion måste berätta för mailet att det ska vara UTF-8. Nu är jag inte någon expert på php och vet inte riktigt hur du gjort för att skicka mail, men jag hittade detta exempel efter en snabb sökning.

<?php
function mail_utf8($to, $from_user, $from_email,
                                             $subject = '(No subject)', $message = '')
   {
      $from_user = "=?UTF-8?B?".base64_encode($from_user)."?=";
      $subject = "=?UTF-8?B?".base64_encode($subject)."?=";

      $headers = "From: $from_user <$from_email>\r\n".
               "MIME-Version: 1.0" . "\r\n" .
               "Content-type: text/html; charset=UTF-8" . "\r\n";

     return mail($to, $subject, $message, $headers);
   }
?>

Och det borde förhoppningsvis räcka. Du har berättat för browsern att du vill ha utf-8 och du har berättat för mailet att det är utf-8 som gäller. Du borde förhoppningsvis inte ha några problem längre med å, ä och ö och som bonus så borde även kinesiska, japanska och arabiska fungera tokfint.

Tack för försöken men jag får inte till det ordentlig

Min php ser inte riktigt ut som exemplet.

Jag hittade mitt på http://www.webdesignskolan.com/ där det även ingår kontrollatt allt är ifyllt.

Vad nytt är:

Jag skickar till One=åäö OK

Vidare till Hotmail = fel

Om jag tar in Hotmail i Windows mail=åäö OK igen

(samma mail som skickas vidare hela tiden)

Jag provar vidare.

Tack än en gång

Redigerad av Cecilia
Flyttat svaret från citat-boxen /Cecilia, moderator
Länk till kommentar
Dela på andra webbplatser

  • 5 years later...

<?php

      $to = "Your e-mail here";

      $from = $_REQUEST['email'];

      $name = $_REQUEST['name'];

      $subject = "You have a message.";

      $fields = array();

      $fields{"name"} = "First name";

      $fields{"email"} = "Email";

      $fields{"message"} = "Message";

      $headers = "MIME-Version: 1.0\r\n";

      $headers .= "Content-type: text/html; charset=UTF-8\r\n";

      $headers .= "From: $from\r\n";

      $body = "Here is what was sent:\n\n";

      foreach ($fields as $a => $b) {
          $body .= sprintf("%20s: %s\n", $b, $_REQUEST[$a]);
      }

      $send = mail($to, $subject, $body, $headers);

?>

Länk till kommentar
Dela på andra webbplatser

 Share

×
×
  • Skapa nytt...