Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: IMAP - osateczne rozwiązanie kodowania?
Forum PHP.pl > Forum > PHP
pppiekarz
Witam. Szukałem na forum informacji na temat tego jak poradzić sobie z różnymi kodowaniami przy funkcjach php IMAP, jednak nigdzie nie znalazłem jednoznacznej odpowiedzi na to jak to robić. Nie wiem czy takiej odpowiedzi po prostu nie ma, czy może nikt nie pokusił się o jej napisanie, w każdym razie wolę zapytać, a może w jakiś sposób ktoś będzie w stanie mi pomóc.

Piszę sobie aplikację, która między innymi będzie robić pracę klienta poczty, jednak problem z którym się spotkałęm jest troszkę trudny do obejścia. Na pewno wszyscy, którzy się bawili IMAPowymi funkcjami wiedzą o co chodzi. Otóż różne emaile mają różne kodowania. Pobierając sobię pocztę z gmaila czasem wszystko jest ok, a czasem pojawiają się krzaki, których nie byłem w stanie w żaden sposób wyeliminować, tak samo z wp i innych miejsc. Najgorszy typ z jakim dane mi było się spotkać to chyba taki, który generuje jednakowe krzaki dla każdego znaczka narodowego. Pytanie moje brzmi, jak przetwarzać pobrane emaile, żeby poprawnie wyświetlały się niezależnie od kodowania. W swojej aplikacji używam oczywiście UTF-8. Do tej pory próbowałem radzić sobie takim kodem:
  1. if(mb_detect_encoding($email['body'])!='UTF-8')
  2. $email['body']=iconv(mb_detect_encoding($email['body']),'UTF-8//IGNORE',$email['body']);

Jednak ten kod nie działa we wszystkich przypadkach.

Tworząc aplikację korzystam z frameworka codeigniter i dodałem sobie taką oto bibliotekę:
https://github.com/gotha/PHP-IMAP-library/b...ter/MailLib.php

Pytanie brzmi, czy ktoś orientuje się może w jaki sposób poradzić sobie z tym problemem kodowania?
Zastanawiające są dla mnie funkcje:
imap_utf8
imap_mime_header_decode

Aczkolwiek do końca chyba nie wiem jak ich używać, bo w różnych kombinacjach nie działało tak jak chciałem. Byłbym wdzięczny za rozwiązanie lub przynajmniej podpowiedź jak to ugryźć ;]
Thommee
Spróbuj mb_convert_encoding()
pppiekarz
noo, próbowałem. Daje taki efekt, że kasuje mi w tych emailach polskie znaki. No krzaków nie ma, ale polskich znaczków też. Żeby jeszcze zamieniał 'Ł' na 'L', to by było w miarę ok, ale po prostu je kasuje ze stringa, bo rozpoznaje jako niedozwolone znaki UTF-8.
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.