Saltar al contenido

PHP: Convertir UTF-8 string a ANSI?

Luego de de una prolongada recopilación de información pudimos solucionar esta incógnita que presentan muchos lectores. Te dejamos la respuesta y nuestro objetivo es resultarte de gran ayuda.

Solución:

Probar:

$csv = iconv("UTF-8", "Windows-1252", $csv);

Pero eventualmente perderá datos porque ANSI solo puede codificar un pequeño subconjunto de UTF-8. Si no tiene una razón muy fuerte en contra, sirva sus archivos codificados en UTF-8.

Dado que hay un malentendido sobre ISO-8859-1, Windows-1252 y ANSI en su pregunta, es importante tener en cuenta que:

El llamado conjunto de caracteres de Windows (WinLatin1, o página de códigos de Windows 1252, para ser exactos) utiliza algunas de esas posiciones para caracteres imprimibles. Por lo tanto, el conjunto de caracteres de Windows NO es idéntico al de ISO 8859-1. El conjunto de caracteres de Windows a menudo se denomina “conjunto de caracteres ANSI”, pero esto es MUY ENGAÑOSO. NO ha sido aprobado por ANSI.

Antecedentes históricos: Microsoft basó el diseño del conjunto en un borrador para un estándar ANSI. Un glosario de Microsoft lo admite explícitamente.

Algunos recursos más: aquí y aquí.

Así que solo FYI para otras personas que terminan en esta pregunta.

Aquí está la explicación exacta de MS sobre esto:

El término “ANSI”, como se usa para referirse a las páginas de códigos de Windows, es una referencia histórica, pero hoy en día es un nombre inapropiado que persiste en la comunidad de Windows. La fuente de esto proviene del hecho de que la página de códigos de Windows 1252 se basó originalmente en un borrador de ANSI, que se convirtió en el estándar 8859-1 de la Organización Internacional de Normalización (ISO). Las “aplicaciones ANSI” suelen ser una referencia a aplicaciones que no son Unicode o basadas en páginas de códigos.

Nos encantaría que puedieras recomendar esta división si te valió la pena.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *