![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cześć, mam pewien problemi. Odbieram imapem wiadomości z gmaila.
Patrzę jaki ma encoding, na tej podstawie decoduje tekst. Patrzę jakie ma kodowanie i na tej podstawie koduje na utf8, czyli np. z iso-8859-2 zamieniam na utf8 Do tej pory wszystko było ok. Ale dziś natrafiłem na maile, które zachowywałe się bardzo dziwnie. Może przedstawię pseudokod jak do tej pory robiłem i było dobrze: Kod $body = 'Tutaj wiadomosc pobrana z imap'; jesli encoding = 1 to przepuszczaj wiadomosc przez imap_8bit() jesli jest charset, to zamieniaj z danego charset na utf8 I to jak pisałem działało do dzisiaj. Dziś trafiłem na wiadomość o treści: Cze?? czyli po poprawnym przekonwertowaniu ma wyjść Cześć. Niestety, po przekonwertowaniu wychodzi: Cze=B6=E6 Wiadomośc jest w kodowaniu iso-8859-2 wiec te krzaczki to są odpowiedniki w iso polskich liter. Jak się okazało, jeśli pominę krok: "jesli encoding = 1 to przepuszczaj wiadomosc przez imap_8bit()" to wiadomość jest poprawnie przekonwertowana. No i teraz mam zagwostkę, bo niektóre maile wymagają by konwertować je w zależności od encoding, a inne jak ten okazało się że nie. Nie jestem w stanie znaleźć zależności, która mi powie, które konwertować a które nie. Podam jeszcze atrybuty jakie zwraca imap dla tej wiadomosci: Cytat [type] => 0
[encoding] => 1 [ifsubtype] => 1 [subtype] => PLAIN [ifdescription] => 0 [ifid] => 0 [lines] => 19 [bytes] => 525 [ifdisposition] => 0 [ifdparameters] => 0 [ifparameters] => 1 [parameters] => Array ( [0] => stdClass Object ( [attribute] => CHARSET [value] => ISO-8859-2 ) [1] => stdClass Object ( [attribute] => FORMAT [value] => flowed ) ) ) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 21:02 |