Post
#1
|
|
|
Grupa: Moderatorzy Postów: 36 561 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 ) ) ) |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Moderatorzy Postów: 36 561 Pomógł: 6315 Dołączył: 27.12.2004 |
Ależ ja właśnie patrze na Content dla każdej wiadomosci i dla czystego tekstu i dla html.
U ciebie dla html jest quoted-printable U mnie przykładowo wiadomość ma encoding imap8. I jak zdekoduje ją przez imap8 tą nieporządany wynik. Gdy oleję imap8 to wszystko jest ok. Sęk w tym, że inne wiadomosci jak mają ustawione imap8 to należy przez imap8 przepuścić bo wtedy są one złe. I nie widzę tu żadnej zależnosci kiedy przepuszczać a kiedy nie skoro każda ma ustawione imap8 edit: wstępna zależność jaką udało mi się ustalić jest taka, ze jak jest encoding imap8 to olewać to i nic nie dekodować. Jak jest inne encoding, to wówczas dekodować (IMG:style_emoticons/default/smile.gif) Jak ktoś może coś do tego dodać to zapraszam (IMG:style_emoticons/default/smile.gif) |
|
|
|
nospor imap kodowanie 22.12.2011, 11:51:54
Bags_Bunny Otworzyłem właśnie email, który zawiera wiadomość ... 22.12.2011, 12:06:48
abort @Bags_Bunny: Quoted-printable (QP) wstawia zakodow... 23.12.2011, 00:12:08
nospor CytatPytanie jest inne: po co to dekodujeszJest po... 23.12.2011, 09:49:05 ![]() ![]() |
|
Aktualny czas: 28.12.2025 - 12:11 |