A simple and working solution for latin encoding supports Slovak, Czech, Russian ect.
<?php iconv("utf-8", "windows-1250", $SomeWeirdText); ?>
specially for those who strugle with imap_mime_header_decode
iconv_mime_decode
(PHP 5)
iconv_mime_decode — Decodifica un campo de la cabecera MIME
Descripción
$encoded_header
[, int $mode = 0
[, string $charset = ini_get("iconv.internal_encoding")
]] )Decodifica un campo de la cabecera MIME.
Parámetros
-
encoded_header -
La cabecera codificada, como string.
-
mode -
modedetermina el comportamiento cuando el evento iconv_mime_decode() encuentra un campo de cabecera MIME mal formado. Puede especificarse cualquier combinación las siguientes máscaras de bits.Máscaras de bits aceptadas por iconv_mime_decode() Valor Constante Descripción 1 ICONV_MIME_DECODE_STRICT Si está definida, la cabecera indicada es decodificada de acuerdo con los estándares definidos en » RFC2047. Esta opción esta deshabilitada por defecto puesto que hay muchos agente de correo incorrectos que no siguen la especificación y no producen las cabeceras MIME correctas. 2 ICONV_MIME_DECODE_CONTINUE_ON_ERROR Si está definida iconv_mime_decode_headers() intenta ignorar cualquier error gramaticar y continúa procesando la cabecera dada. -
charset -
El parámetro opcional
charsetespecifica el set de caracteres a usar para representar el resultado. Si se omite, se usará iconv.internal_encoding.
Valores devueltos
En caso de éxito retorna un campo MIME decodificado o
FALSE si ocurre cualquier error durante la decodificación.
Ejemplos
Ejemplo #1 Ejemplo de la función iconv_mime_decode()
<?php
// Esto contiene "Subject: Prüfung Prüfung"
echo iconv_mime_decode("Subject: =?UTF-8?B?UHLDvGZ1bmcgUHLDvGZ1bmc=?=",
0, "ISO-8859-1");
?>
Ver también
- iconv_mime_decode_headers() - Decodifica varios campos de cabeceras MIME en la misma llamada
- mb_decode_mimeheader() - Decodifica un string en el campo de cabecera MIME
- imap_mime_header_decode() - Decodificar los elementos de la cabecera MIME
- imap_base64() - Decodificar un texto cifrado con BASE64
- imap_qprint() - Convertir una cadena imprimible entrecomillada a una cadena de 8 bits
In PHP versions that have imap_mime_decode built in, it's possible to emulate the operation of this function:
<?php
function iconv_mime_decode($str, $mode=0, $charset="UTF-8")
{
$data = imap_mime_header_decode($str);
if (count($data) > 0) {
// because iconv doesn't like the 'default' for charset
$charset = ($data[0]->charset == 'default') ? 'ASCII' : $data[0]->charset;
return(iconv($charset, $charset, $data[0]->text));
}
return("");
}
?>
I've only tried to use this code snippet to decode ISO-2022-JP messages to UTF-8, but I see no reason why it shouldn't work in other cases.
