Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]mail() - problem z kodowaniem przy użyciu iconv()
Forum PHP.pl > Forum > Przedszkole
Savage.Mephisto
Mam frustrujący problem z kodowaniem polskich znaków w treści maila, który jest generowany automatycznie i wysyłany przy użyciu funkcji mail().
Treść maila jest ucinana, gdy tylko pojawi się w niej znak w innym kodowaniu niż utf-8.
Zauważyłem, że Firefox 3.3.x ma czasem problemy z kodowaniem utf-8 i bez ingerencji użytkownika przestawia się na windows-1250.
Klient w sklepie internetowym wybiera przykładowo kolor ubrania i w miejscu polskich znaków pojawia się zamiast "żółty" zonk w stylu "żó?�ty". Po złożeniu zamówienia kolor w takiej formie jest zapisywany do bazy danych.
Zarówno baza danych, jak i kodowanie na stronie jest w utf-8. Treść maila jest przekodowywana w locie z utf-8 na iso-8859-2.

Fragment kodu:

  1. $tytuliso = iconv("UTF-8", "ISO-8859-2", $tytul);
  2. $tytuliso = "=?iso-8859-2?B?".base64_encode($tytuliso)."?=";
  3. $tresciso = iconv("UTF-8", "ISO-8859-2", $tresc);
  4. mail($email, $tytuliso, $tresciso, "From: $zam_header <$zam_email>\r\n"."Content-Type: text/plain; CharSet=ISO-8859-2; format=flowed");



Panowie, macie jakiś pomysł na rozwiązanie powyższego problemu?
Dodam, że nie występuje on za każdym razem.
Danielcom
Też miałem podobny problem, który rozwiązałem tak:

Nagłówki
  1. $naglowki = "Reply-to: $adresat <$adresat>\r\n";
  2. $naglowki .= "From: mail@mail.pl <mail@mail.pl>\r\n";
  3. $naglowki .= "MIME-Version: 1.0\r\n";
  4. $naglowki .= "Content-type: text/html; charset=iso-8859-2\r\n";
  5.  


Zmiana kodowania
  1. $temat = iconv("UTF-8","ISO-8859-2",$temat);
  2. $wiadomosc = iconv("UTF-8","ISO-8859-2",$wiadomosc);


wp, onet, interia, o2 - akceptują taką formę smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.