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: Zarejestrowani Postów: 262 Pomógł: 39 Dołączył: 12.04.2004 Ostrzeżenie: (0%)
|
Otworzyłem właśnie email, który zawiera wiadomość w HTML oraz alternatywną w czystym tekście i wygląda na to, że obie części są zakodowane w inny sposób.
Konkretniej: część w text/plain (Content-Type: text/plain; charset=ISO-8859-1; format=flowed; delsp=yes) jest "czysta", natomiast część w text/html (Content-Type: text/html; charset=ISO-8859-1; Content-Transfer-Encoding: quoted-printable) zawiera dodatkowe znaki: Cytat <td width=3D"626" valign=3D"top" style=3D"background-color: #FFFFFF;"><t= able style=3D"border-spacing: 0px; font-family:Calibri, Verdana, Arial; fon=... Spróbuj zwrócić uwagę na nagłówki Content-*. |
|
|
|
nospor imap kodowanie 22.12.2011, 11:51:54
nospor Ależ ja właśnie patrze na Content dla każdej wiado... 22.12.2011, 13:21:10
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: 26.12.2025 - 17:05 |