Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> imap kodowanie
nospor
post
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
)

)

)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 21:02