Convertir caracteres utf8 a iso-88591 y viceversa en PHP

Algunos de mis scripts utilizan codificaciones diferentes, y cuando intento combinarlos, esto se ha convertido en un problema.

Pero no puedo cambiar la codificación que usan, sino que quiero cambiar la codificación del resultado del script A, y usarlo como parámetro en el script B.

Entonces: ¿hay alguna forma sencilla de cambiar una cadena de UTF-8 a ISO-88591 en PHP? He mirado utf_encode y _decode, pero no hacen lo que quiero. ¿Por qué no existe ninguna función "utf2iso()"o similar?

No creo que tenga caracteres que no puedan escribirse en formato ISO, así que no debería ser un gran problema.

Solución

Echa un vistazo a iconv() o mb_convert_encoding(). Por cierto: ¿por qué no te funcionan utf8_encode() y utf8_decode()?

utf8_decode - Convierte una cadena con caracteres ISO-8859-1 codificados con UTF-8 a ISO-8859-1 de byte único &gt utf8_encode - Codifica una cadena ISO-8859-1 a UTF-8

Así que esencialmente

$utf8 = 'ÄÖÜ'; // file must be UTF-8 encoded
$iso88591_1 = utf8_decode($utf8);
$iso88591_2 = iconv('UTF-8', 'ISO-8859-1', $utf8);
$iso88591_2 = mb_convert_encoding($utf8, 'ISO-8859-1', 'UTF-8');

$iso88591 = 'ÄÖÜ'; // file must be ISO-8859-1 encoded
$utf8_1 = utf8_encode($iso88591);
$utf8_2 = iconv('ISO-8859-1', 'UTF-8', $iso88591);
$utf8_2 = mb_convert_encoding($iso88591, 'UTF-8', 'ISO-8859-1');

todos deberían hacer lo mismo - con utf8_en/decode() no requiriendo ninguna extensión especial, mb_convert_encoding() requiriendo ext/mbstring y iconv() requiriendo ext/iconv.

Comentarios (4)

En primer lugar, no utilices diferentes codificaciones. Es un lío, y UTF-8 es definitivamente la que deberías usar en todas partes.

Lo más probable es que tu entrada no sea ISO-8859-1, sino otra cosa (ISO-8859-15, Windows-1252). Para convertir desde esos, usa iconv o mb_convert_encoding.

No obstante, utf8_encode y utf8_decode deberían funcionar para ISO-8859-1. Estaría bien que publicaras un enlace a un archivo o una uuencoded o base64 cadena de ejemplo para la que la conversión falle o dé resultados inesperados.

Comentarios (3)

Debe utilizar el paquete iconv, concretamente su función iconv.

Comentarios (0)