[PHP] IMAP - kódování zprávy do UTF-8

Webdesign, HTML, CSS, Flash, PHP, ASP, .NET, JavaScript. Kritika www stránek na Smetišti.

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod infomf 5. 11. 2013 19:57

Ahoj,
řeším problém, jak překódovat zprávu z 8BIT na UTF-8.
Zpráva získána:
Kód: Vybrat vše
imap_fetchbody($this->mbox, $messageNumber, $partNumber, FT_UID);

a potom překódováno
Kód: Vybrat vše
switch($encoding) {
   case 0: return mb_convert_encoding($data, 'UTF-8', '7BIT'); // 7BIT
   case 1: return mb_convert_encoding($data, 'UTF-8', '8BIT'); // 8BIT
   case 2: return $data; // BINARY
   case 3: return base64_decode($data); // BASE64
   case 4: return quoted_printable_decode($data); // QUOTED_PRINTABLE
   case 5: return $data; // OTHER
}


Přičemž vím, že můj konkrétní problém se týká 8BIT. Původní kódování zjištěno z imap_fetchstructure.

Výsledek kódování je vždy špatný. Nezobrazují se české znaky.
Ještě dodávám hlavičku e-mailu
Kód: Vybrat vše
Content-Type: text/plain; charset=windows-1250; format=flowed
Content-Transfer-Encoding: 8bit

Díky za rady
infomf
Junior
Uživatelský avatar

Odeslat příspěvekod (C) 5. 11. 2013 20:26

a nechcete spis kodovat z Windows-1250 na UTF8?
(C)
Junior

Odeslat příspěvekod akira.uzai 5. 11. 2013 20:34

Jasně že se to zobrazuje špatně, když dáváte do hlavičky špatné kódování. Pro e-maily se už pěkně dlouho používá UTF-8 a kdyb jste z nějakého důvodu nechtěl použít UTF-ko, tak správné české kódování je ISO-8859-2!
Naposledy upravil Vebloud dne 6. 11. 2013 15:35, celkově upraveno 1
Důvod: Citace
あきらうざい
akira.uzai
Junior
Uživatelský avatar


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků