Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] imap kodowanie do UTF-8
Forum PHP.pl > Forum > Przedszkole
szybki
Pobieranie wiadomości w PHP przez IMAP jakie jest, każdy wie... Potrzebne dane o kodowaniu pobieram przez

  1. $imapStructure = imap_fetchstructure($this->imap, $id);


lub

  1. imap_mime_header_decode($header->subject)


Jednak jak zmusić php żeby zawsze wypluł string np tematu lub nazwy nadawcy w UTF-8?

Teraz robię to tak:

  1. if('default' != $charset AND !empty($charset))
  2. {
  3. return iconv($charset, "UTF-8", $text);
  4. }
  5. elseif('default' == $charset)
  6. {
  7.  
  8.  
  9. }
  10. }


Jednak właśnie co z przypadku gdy IMAP w nagłówku zwraca pustą wartość lub "default" ? Wtedy w tekście mam krzaki np

Cytat
E��tor


Gdzie powinno to być jako Eółtor. Wiaodmości też przekazują "encoding" w formie numerów http://php.net/manual/en/function.imap-fetchstructure.php jednak żadna zmiana pod ich numer nie działa i krzaki nadal występują. Dodam że mb_detect_encoding zwraca pusty wynik.
Johnas
  1. $tekst_utf = iconv('UTF-8', 'ASCII//TRANSLIT', $tekst);


strzelałem że tam jest edytor biggrin.gif
szybki
Jaki edytor?

Teraz dostaję komunikaty:
Cytat
iconv(): Detected an incomplete multibyte character in input string
iconv(): Detected an illegal character in input string
Johnas
spróbuj tego smile.gif
http://stackoverflow.com/questions/1355615...onvert-to-utf-8
szybki
Już to próbowałem i nie pomaga, krzaki jak były tak są

Aktualnie funkcja do zmiany na UTF dla wszystkiego wygląda tak:

  1. function toUtf8($text, $charset = null, $encoding = null)
  2. {
  3.  
  4.  
  5. if('default' != $charset AND !empty($charset))
  6. {
  7. return iconv($charset, "UTF-8", $text);
  8. }
  9. elseif('default' == $charset)
  10. {
  11. switch ($encoding) {
  12. # 7BIT
  13. case 0:
  14. return $text;
  15. # 8BIT
  16. case 1:
  17. return quoted_printable_decode(imap_8bit($text));
  18. # BINARY
  19. case 2:
  20. return imap_binary($text);
  21. # BASE64
  22. case 3:
  23. return imap_base64($text);
  24. # QUOTED-PRINTABLE
  25. case 4:
  26. return quoted_printable_decode($text);
  27. # OTHER
  28. case 5:
  29. return $text;
  30. # UNKNOWN
  31. default:
  32. return $text;
  33. }
  34.  
  35.  
  36.  
  37.  
  38. }
  39.  
  40. }


I krzaki występują sporadycznie, raz na 1000 maila, wszysto inne jest idalnie... Tekst tego emaila nie ma żadnego kodowania, nie jest wykrywane.

Edycja:

A encoding zwraca 0;
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.