Problemas com Acentuação e IMAP

241 views
Skip to first unread message

Hugo Rabelo

unread,
Dec 16, 2008, 3:03:26 PM12/16/08
to php...@googlegroups.com
Caros,

estou enfrentando uns problemas de acentuação quando vou abrir mensagens de email, utilizando a função imap_fetchbody, pois não estou conseguindo codificar a mensagem corretamente.

Quando eu chamo a mensagem, ela retorna com a acentuação no seguinte formato:
acentua=E7=E3o (quando deveria ser acentuação).

Já tentei converter a string utilizando imap_utf8, utf8_decode, utf8_encode e nada funcionou. Gostaria de saber se alguém, que já tenha tido alguma experiência com o IMAP, já enfrentou algo do tipo ou, então, de sugestões para que eu possa resolver esse problema.

Abraços,
Hugo Rabelo

Felipe Ribeiro

unread,
Dec 16, 2008, 4:17:49 PM12/16/08
to php...@googlegroups.com
Hum, eu nunca mexi com isso, mas sei que IMAP tem um negócio de UTF7
imap_utf7_encode/decode. Não sei se resolve teu problema, mas não
custa tentar.

Curiosidade: sabiam que esses erros de codificação têm um nome próprio
(em japonês mas que é usado no mundo todo)? Esse tipo de erro chama-se
*mojibake* (http://en.wikipedia.org/wiki/Mojibake). :-P

[]'s

Felipe Ribeiro
feli...@gmail.com
http://feliperibeiro.com
+55 83 9979-3161



2008/12/16 Hugo Rabelo <hugo....@gmail.com>:

Sthenley Macedo

unread,
Dec 16, 2008, 8:24:46 PM12/16/08
to php...@googlegroups.com
Salve, lista!


A máquina que roda o script é Linux (UTF8)?

Bem! Se a codificação do seu servidor (OS / HTTPd) é UTF8, comece a trabalhar com arquivos em formato UTF8. Muitas vezes desenvolvemos no Windows (ISO-8859-1) e fazemos upload para o Linux... Até o bloco de notas salva como UTF8, na opção de mesmo nome. Se trabalhar sempre com o mesmo padrão não terá problemas. UTF não é o nosso padrão mas é tendência e aceito em todo lugar, como dólar.
Se seus arquivos são ISO e não quer abrir mão, qualquer que seja o motivo, mexa no ambiente. Por exemplo, no Apache, altere a linha no httpd.conf:

AddDefaultCharset UTF-8
Para:
AddDefaultCharset iso-8859-1

Reinicia o bicho e pronto.

Neste caso, principalmente se seu script tem alguma interface com o usuário, pega variáveis via GET/POST, por exemplo, inclua algo como isto no início:
header('Content-type: text/html; charset=iso-8859-1' );

Daí, trabalhando com arquivos salvos no windows, resolve todos os seus problemas.

Se for ao contrário e até o cliente (Browser) for Linux, force tudo para UTF8.


Virtualmente,
S t h e n l e y
35E.gif

Hugo Rabelo

unread,
Dec 16, 2008, 9:06:10 PM12/16/08
to php...@googlegroups.com
Fala, galera...

Valeu pela ajuda.. mas eu consegui resolver o problema.
Bom, todos os arquivos já são codificados pra utf-8, também pelo fato de estar trabalhando com ajax.

Olhando alguns exemplos, vi a função imap_qprint, que aplicada ao string codificado, conseguiu imprimir a acentuação normalmente.

Abraços,
Hugo Rabelo

2008/12/16 Sthenley Macedo <sthe...@gmail.com>

Sthenley Macedo

unread,
Dec 17, 2008, 5:51:39 AM12/17/08
to php...@googlegroups.com
Bons dias!

 
Olhando alguns exemplos, vi a função imap_qprint, que aplicada ao string codificado, conseguiu imprimir a acentuação normalmente.

São duas nuances do problema: página de código/codificação e o fato dos protocolos de email trafegarem somente texto (7 bits). UTF usa 8 bits, daí a necessidade de conversão. Qualquer conteúdo no âmbito dos protocolos de email está sempre em 7 bits e precisa ser convertido em algum momento se quiser usar 8 bits. Normalmente é convertido no cliente (MIME64, UUENCODE, etc).


Abratzo!
Reply all
Reply to author
Forward
0 new messages