Estamos hosting PHP aplicaciones basadas en Debian instalación de la LÁMPARA.
Todo está muy bien – rendimiento, administrativos y de gestión prudente.
Sin embargo, siendo un poco los nuevos desarrolladores (estamos todavía en la escuela secundaria) nos hemos topado con algunos problemas con la codificación de caracteres para el Oeste de los conjuntos de caracteres.

Después de hacer una gran cantidad de investigaciones he llegado a la conclusión de que la información en línea es algo confuso. Está hablando de Windows-1252 siendo ANSI y totalmente ISO-8859-1 compatible.

Así que de todos modos, ¿Cuál es la diferencia entre Windows-1252(1/3/4) y ISO-8859-1?
Y ¿de dónde ANSI entrar en esto de todos modos?

Lo que la codificación debe utilizamos en nuestro Debian (servidores y estaciones de trabajo) con el fin de garantizar que los clientes reciben toda la información en la forma prevista y que no perdamos cualquier chars en el camino?

InformationsquelleAutor | 2013-10-01

4 Comentarios

  1. 32

    Me gustaría responder a esta en una más en la web, como la forma y el fin de responder a él, así que se necesita un poco de historia. Joel Spolsky ha escrito un muy bueno introductionary artículo en el mínimo absoluto que todo programador debería saber sobre la Codificación de Caracteres Unicode.
    Oso conmigo aquí porque esto va a ser algo de una looong respuesta. 🙂

    Como una historia voy a señalar algunas citas de lo que hay: (muchas Gracias Joel! 🙂 )

    Los únicos personajes que importaba eran los buenos viejos sin acento inglés de las letras, y teníamos un código para ellos llamado ASCII que fue capaz de representar cada carácter mediante un número de entre 32 y 127. El espacio era de 32, la letra «a» fue de 65, etc. Esto podría muy bien ser almacenada en 7 bits. La mayoría de los equipos en esos días estaban usando 8 bits, bytes, por lo que no sólo podría almacenar todos los posibles caracteres ASCII, pero tenía un poco de sobra, que, si eran malos, se podría utilizar para su propio retorcidos propósitos.

    Y todo estaba bien, suponiendo que usted es un hablante de inglés.
    Porque bytes tiene espacio para hasta ocho bits, mucha gente se puso a pensar, «¡por dios, podemos utilizar los códigos de 128 a 255 para nuestros propios fines.» El problema fue, un montón de personas que tenían esta idea, al mismo tiempo, y tenían sus propias ideas de lo que debe ir a donde en el espacio de 128 a 255.

    Por lo que ahora «los juegos de caracteres OEM» fueron distribuidas con los PCs y estos aún eran todos diferentes e incompatibles. Y a nuestros contemporáneos asombro – todo fue bien! Ellos no tienen Internet y que la gente rara vez el intercambio de archivos entre sistemas con diferentes configuraciones regionales.

    Joel continúa diciendo:

    De hecho, tan pronto como la gente empezó a comprar PCs fuera de estados unidos todo tipo de diferentes juegos de caracteres OEM fueron creadas, todas las cuales se utiliza la parte superior de 128 caracteres para sus propios fines.
    Finalmente, esta OEM gratis-para-todos tenemos codificado en el estándar ANSI. En el estándar ANSI, todos estuvieron de acuerdo en qué hacer a continuación 128, que era el mismo como ASCII, pero había un montón de diferentes maneras de manejar a los personajes de 128 y, dependiendo de donde usted vive. Estos sistemas fueron llamados código de las páginas.

    Y así es como el «Código de Windows páginas» nacieron, con el tiempo. En realidad eran «emparentado» por las DOS páginas de códigos. Y, a continuación, Unicode nació! 🙂 y UTF-8 es «otro sistema de almacenamiento de la cadena de puntos de código Unicode» y en realidad «cada punto de código de 0-127 se almacena en un único byte» y es el mismo que ASCII. No voy a entrar en más detalles de Unicode y UTF-8, pero usted debe leer sobre el Lista de materiales, Endianness y La Codificación De Caracteres como un general.

    Sobre «el ANSI de la conspiración», en realidad, Microsoft admite la señorita-el etiquetado de Windows-1252 en un glosario de términos:

    El llamado conjunto de caracteres de Windows (WinLatin1, o la página de códigos de Windows 1252, para ser exactos) utiliza algunos de esos puestos para los caracteres imprimibles. Por lo tanto, el conjunto de caracteres de Windows NO es idéntica con la norma ISO 8859-1. El conjunto de caracteres de Windows es a menudo llamado «juego de caracteres ANSI», pero esto es en SERIO ENGAÑOSA. NO ha sido aprobado por ANSI.

    Así, ANSI cuando se refiere a conjuntos de caracteres de Windows no es ANSI-certificado! 🙂

    Como Jukka señaló (créditos que van por la buena respuesta )

    Windows-1252 ISO Latin-1, también conocido como ISO-8859-1 como una codificación de caracteres, por lo que el rango de código 0x80 a 0x9F está reservado para el control de caracteres ISO-8859-1 (llamado C1 Controles), considerando que en Windows-1252, algunos de los códigos no son asignados a los caracteres imprimibles (en su mayoría de los caracteres de puntuación), otros se quedan indefinidos.

    Sin embargo, mi opinión personal y la comprensión técnica es que tanto Windows-1252 y ISO-8859-1 NO SON WEB CODIFICACIONES! 🙂 Así:

    • Para las páginas web, por favor utilice el formato UTF-8 como codificación para el contenido
      Para almacenar datos como UTF-8 y «spit it out» con el Encabezado HTTP: Content-Type: text/html; charset=utf-8.

      También hay una cosa que se llama el HTML content-type de la etiqueta meta:
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

      Ahora, ¿qué navegadores realmente hacen cuando se encuentran con esta etiqueta, es que empiezan desde el inicio del documento HTML, de nuevo, de modo que se podría reinterpretar el documento, en la declarada codificación. Esto debería ocurrir sólo si no hay ninguna ‘Content-type’ encabezado.

    • El uso de otras codificaciones si los usuarios de su sistema de archivos generados a partir de ella.
      Por ejemplo, algunos países occidentales los usuarios pueden necesitar Excel los archivos generados, o Csv en Windows-1252. Si este es el caso, codificar el texto en que la configuración regional y, a continuación, guárdelo en el fs y servir como descargar-capaz de archivo.

    • Hay otra cosa a tener en cuenta en la diseño de HTTP:
      El contenido de codificación de la distribución del mecanismo de trabajo de este tipo.

      I. El cliente solicita una página web en un contenido específico y tipos de codificaciones a través de: la ‘Aceptar’ y ‘Accept-Charset’ encabezados de solicitud.

      II. A continuación, el servidor (o aplicación web) devuelve el contenido de trans-codificado para que la codificación y el conjunto de caracteres.

    Este NO es EL CASO en la mayoría de las modernas aplicaciones web. Lo que en realidad sucede es que las aplicaciones web de servir (la fuerza de la cliente) el contenido como UTF-8. Y esto funciona porque los navegadores interpretan recibido los documentos basados en los encabezados de respuesta y no en lo que realmente se esperaba.

    Todos debemos ir Unicode, así que por favor, por favor, por favor, utilice la codificación UTF-8 para distribuir su contenido siempre que sea posible y la mayoría de todas las leyes. O bien los ancianos de la Internet te atrapará! 🙂

    P. S.
    Algunos más buenos artículos sobre el uso de MS Windows caracteres en las Páginas Web se puede encontrar aquí y aquí.

    • Gracias por esa gran respuesta. El uso de los enlaces que he creado este conjunto de todas las posibles cadenas de codificación, no estoy seguro si es útil pero compartir el enlace para todos aleatoria de los empleados como yo: gist.github.com/liesislukas/d7c4bcd0e8b83aef084d8d269fbd7ba7
    • bueno saber ayudado
  2. 16

    La más autorizada referencia a los significados de la codificación de caracteres de los nombres es el registro de la IANA Conjuntos De Caracteres.

    Windows-1252 es comúnmente conocido como Windows latina 1 o como Windows europa Occidental o algo por el estilo. Se diferencia de la ISO Latin-1, también conocido como ISO-8859-1 como una codificación de caracteres, por lo que el rango de código 0x80 a 0x9F está reservado para el control de caracteres ISO-8859-1 (llamado C1 Controles), considerando que en Windows-1252, algunos de los códigos no son asignados a los caracteres imprimibles (en su mayoría de los caracteres de puntuación), otros se quedan indefinidos.

    ANSI viene aquí como un término equivocado. Microsoft una vez presentado Windows-1252 a Instituto Americano de Estándares Nacionales (ANSI) para ser adoptado como un estándar; la propuesta fue rechazada, pero Microsoft todavía llama a su código «ANSI». Para más confusión, se puede utilizar «ANSI» para diferentes codificaciones (básicamente, los «nativos codificación de 8 bits» de una instalación de Windows).

    En el contexto de web, declarando ISO-8859-1 será tomado como si declara Windows-1252. La razón es que C1 Controles no se utilizan, o útiles en la web, mientras que el agregado de los caracteres se utilizan a menudo, incluso en las páginas mal rotulada como ISO-8859-1. Así que en términos prácticos no importa que uno se declara.

    Puede haber algunos de los navegadores que realmente interpretar los datos como ISO-8859-1 si se ha declarado así, pero deben ser muy raros (la última vez que recuerdo haber visto fue una versión de la Ópera de hace unos diez años).

    Que no describen lo que los problemas que se han encontrado. La causa más común de problemas parece ser que los datos codificados en UTF-8 pero declaró como ISO-8859-1 (o Windows-1252), o viceversa. Esto se convierte en un verdadero problema para los autores de la página web si un servidor fuerzas un Content-Type encabezado de la declaración de una codificación de caracteres y es uno de los que no pueden hacer frente en su entorno de creación (o no saben cómo hacerlo).

  3. 3

    ANSI (Windows-1252) en los países con un inglés/alfabeto latino, por ejemplo, reino unido/estados unidos/Francia/Alemania y otros, se refiere a la de Windows-1252 de codificación. https://web.archive.org/web/20170916200715/http://www.microsoft.com:80/resources/msdn/goglobal/default.mspx

    Windows-1252. y ISO-8859-1 son muy similares. Sólo se diferencian
    en 32 caracteres.

    En Windows-1252, los personajes de 128 159 se usan para algunas útil
    personajes como el símbolo del Euro.

    En ISO-8859-1 estos caracteres se asignan a los caracteres de control que
    son inútiles en HTML.

    __
    así que una sugerencia
    para ver si el 128 es símbolo del euro.. si es que es Windows 1252.
    __

    Los códigos de 128 159 no están en uso en ISO-8859-1, pero muchas
    los navegadores muestren los caracteres de Windows-1252)
    conjunto de caracteres en lugar de nada.

    Estos 2 enlaces de la lista de ambos.

    http://www.w3schools.com/charsets/ref_html_ansi.asp

    http://www.w3schools.com/charsets/ref_html_8859.asp

    Algunos comentarios fueron muy útiles y he modificado mi post en consecuencia, sobre la base de ellos.

    Chenfeng señala
    En Windows, «ANSI» se refiere al sistema de la página de códigos especificada por la configuración regional, sea lo que sea (árabe/Chino/Cirílico/Vietnamita/…). No [necesariamente] consulte.. para Windows-1252. Usted puede probar esta cambiando su configuración regional y, a continuación, utilizar notepad.exe para guardar un archivo de texto en «ANSI». De acuerdo a este MS documentación, hay 14 diferentes «ANSI» código de las páginas https://docs.microsoft.com/en-us/windows/desktop/intl/code-page-identifiers

    Wernfriend señala
    https://web.archive.org/web/20170916200715/http://www.microsoft.com:80/resources/msdn/goglobal/default.mspx y que usa la página de códigos 437 es el ‘de la página de códigos OEM’, (ver OEM de la columna), y la página de códigos OEM es el utilizado por la consola cmd. Y señala /sugiere, mostrando desde la página web, que en muchos no-inglés/latino el alfabeto en los países de habla ansi no es windows 1252. Me doy cuenta de que por ejemplo, el hebreo ansi utiliza 1255. (hebreo de la página de códigos OEM es 862).

    • Creo que «ANSI es también llamado «Windows-1252» sólo es válido en un «western» de PC. En otras regiones «ANSI» podría algo diferente, consulte Soporte de Idioma Nacional (NLS) Referencia de la API
    • hmm.. el oeste de europa es una especie de western, y fuera de europa(geográficamente fuera de ella, a pesar de que parte de lo político a partir de 1973-reciente), pero todavía occidental, tienen la página de códigos 850 frente a estados unidos de la página de códigos 437. Voy a mirar en la idea de que existen diferentes conjuntos de caracteres conoce como ANSI.
    • También, al Parecer, también hay diferencias significativas no he mencionado entre ISO 8859-1 y Windows-1252 en.wikipedia.org/wiki/Windows-1252 «es muy común etiquetan mal de Windows-1252 texto con el conjunto de caracteres de la etiqueta ISO-8859-1. Un resultado común era que todas las citas y los apóstrofes (producido por «comillas tipográficas» en el software de procesamiento de textos) fueron reemplazados con signos de interrogación o cajas en sistemas operativos no Windows, haciendo que el texto sea difícil de leer»
    • Te perdiste la columna «de la página de códigos ANSI» con «de la página de códigos OEM». Para la mayoría de los países/regiones de la página de códigos ANSI es de 1252, sin embargo, hay algunos otros. «OEM» es la página de códigos predeterminada cuando se inicia el cme.exe.
    • En Windows, «ANSI» se refiere al sistema de la página de códigos especificada por la configuración regional, sea lo que sea (árabe/Chino/Cirílico/Vietnamita/…). No se refiere a Windows-1252. Usted puede probar esta cambiando su configuración regional y, a continuación, utilizar notepad.exe para guardar un archivo de texto en «ANSI». De acuerdo a la este MS documentación, hay 14 diferentes «ANSI» código de las páginas.
  4. 2

    Esta tabla da una visión general acerca de las diferencias. Muestra todos los caracteres que se definen en Windows-1252, pero no disponibles en ISO-8859-1/ISO-8859-15:

            │  …0  │  …1  │  …2  │  …3  │  …4  │  …5  │  …6  │  …7  │  …8  │  …9  │  …A  │  …B  │  …C  │  …D  │  …E  │  …F  │
    ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
         8… │   €  │      │   ‚  │   ƒ  │   „  │   …  │   †  │   ‡  │   ˆ  │   ‰  │   Š  │   ‹  │   Œ  │      │   Ž  │      │
    Unicode │ 20AC │      │ 201A │ 0192 │ 201E │ 2026 │ 2020 │ 2021 │ 02C6 │ 2030 │ 0160 │ 2039 │ 0152 │      │ 017D │      │
    ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
         9… │      │  ‘   │   ’  │   “  │   ”  │   •  │   –  │   —  │   ˜  │   ™  │   š  │   ›  │   œ  │      │   ž  │   Ÿ  │
    Unicode │      │ 2018 │ 2019 │ 201C │ 201D │ 2022 │ 2013 │ 2014 │ 02DC │ 2122 │ 0161 │ 203A │ 0153 │      │ 017E │ 0178 │
    

    A diferencia de Windows-1252 rango 0x80…0x9F se utiliza para Los Códigos De Control en ISO-8859-1.

    Esta tabla muestra las diferencias entre Windows-1252, ISO-8859-1 y ISO-8859-15

    Character    │    € │   Š │   š │   Ž │   ž │   Œ │   œ │   Ÿ │  ¤ │  ¦ │  ¨ │  ´ │  ¸ │  ¼ │  ½ │  ¾ │
    ───────────────────────────────────────────────────────────────────────────────────────────────────────
    ISO 8859-1   │    – │   – │   – │   – │   – │   – │   – │   – │ A4 │ A6 │ A8 │ B4 │ B8 │ BC │ BD │ BE │
    ISO 8859-15  │   A4 │  A6 │  A8 │  B4 │  B8 │  BC │  BD │  BE │  – │  – │  – │  – │  – │  – │  – │  – │
    Windows-1252 │   80 │  8A │  9A │  8E │  9E │  8C │  9C │  9F │ A4 │ A6 │ A8 │ B4 │ B8 │ BC │ BD │ BE │
    Unicode      │ 20AC │ 160 │ 161 │ 17D │ 17E │ 152 │ 153 │ 178 │ A4 │ A6 │ A8 │ B4 │ B8 │ BC │ BD │ BE │
    

Dejar respuesta

Please enter your comment!
Please enter your name here