Pregunta

¿El plazo de varios bytes se refiere a un conjunto de caracteres cuyos personajes puede - pero no tienen que ser - más ancho que 1 byte, (por ejemplo, UTF-8) o se refiere a conjuntos de caracteres que se encuentran en cualquier caso más ancho que 1 byte (por ejemplo, UTF-16)? En otras palabras:? ¿Qué se entiende que si alguien habla de juegos de caracteres de varios bytes

¿Fue útil?

Solución

El término es ambiguo, pero en mi trabajo internacionalización, por lo general evita el término "juegos de caracteres de varios bytes" para referirse a las codificaciones de tipo Unicode. Generalmente, utilizamos el término sólo para los sistemas de legado de codificación que tenía uno o más bytes para definir cada personaje (con exclusión de las codificaciones que requieren sólo un byte por carácter).

Shift-JIS, JIS, EUC-JP, EUC-KR, junto con codificaciones chinos normalmente están incluidos.

La mayoría de las codificaciones heredadas, con algunas excepciones, requieren un tipo de modelo de máquina de estados (o, más simplemente, un modelo de intercambio de la página) para procesar, y moviéndose hacia atrás en un flujo de texto es complicado y propenso a errores. UTF-8 y UTF-16 no sufren de este problema, como UTF-8 puede ser probada con una máscara de bits y UTF-16 puede ser probada contra una gama de pares suplentes, por lo que se mueve hacia atrás y hacia adelante en un documento no patológica puede hacerse de forma segura y sin gran complejidad.

Unos codificaciones heredadas, para idiomas como el tailandés y vietnamita, tienen algo de la complejidad de los juegos de caracteres de varios bytes, pero en realidad sólo se basan en la combinación de caracteres, y no están generalmente agrupados con el amplio término "multibyte."

Otros consejos

  

Lo que se quiere decir que si alguien habla de juegos de caracteres de varios bytes?

que, para variar, depende de quién está haciendo la conversación!

Lógicamente, debe incluir UTF-8, Shift-JIS, GB etc .: las codificaciones de longitud variable. UTF-16 podría no ser considerado a menudo en este grupo (a pesar de que tipo de es decir, lo que con los sustitutos, y sin duda es múltiples bytes cuando se codifica en bytes a través de UTF-16LE / UTF-16BE).

Sin embargo, en el término Microsoftland más típicamente se usa para indicar una página de códigos del sistema por defecto de longitud variable (para las aplicaciones heredadas que no son Unicode, de los cuales hay todavía mucho por desgracia). En este uso, UTF-8 y UTF-16LE / UTF-16BE no puede ser incluido porque la página de códigos del sistema en Windows no puede ajustarse a cualquiera de estas codificaciones.

De hecho, en algunos “MBCS” casos no es más que un sinónimo de la página de códigos del sistema, conocido de otro modo (incluso más engañosamente) como “ANSI”. En este caso, un conjunto de caracteres “multibyte” en realidad podría ser algo tan trivial como CP1252 de Europa occidental, que sólo utiliza un byte por carácter!

Mi consejo: utilizar “de longitud variable” cuando quiere decir eso, y evitar el término “multibyte” ambigua; cuando alguien más lo usa tendrá que pedir una aclaración, pero por lo general alguien con un fondo de Windows a estar hablando de un legado página de códigos de Asia Oriental como cp932 (Shift-JIS) y no un UTF.

Todos los juegos de caracteres en el que no tiene una asignación de caracteres = 1 1 byte. Todas las variantes de Unicode, sino también juegos de caracteres asiáticos son varios bytes.

Para obtener más información, sugiero la lectura este artículo de Wikipedia .

Un carácter multibyte significará un personaje cuya codificación requiere más de 1 byte. Esto no implica sin embargo que todos los caracteres que utilizan ese codificación particular tendrán la misma anchura (en términos de bytes). Por ejemplo:. UTF-8 y UTF-16 carácter codificado puede utilizar múltiples bytes veces mientras todos UTF-32 caracteres codificados siempre utiliza 32 bits

Referencias:

Normalmente la primera, es decir, UTF-8-similares. Para más información, véase de longitud variable de codificación .

El ex -. Aunque el término "codificación de longitud variable" sería más apropiado

Yo generalmente uso para referirse a cualquier personaje que puede tener más de un byte por carácter.

  

Un conjunto de caracteres multibyte puede consistir tanto de un byte y de dos bytes   caracteres. Así, una cadena multibyte caracteres puede contener una mezcla de   De un solo byte y de doble byte.

Ref: de un solo byte y caracteres de múltiples bytes Establece

UTF-8 es de varios bytes, lo que significa que cada personaje Inglés (ASCII) se almacena en 1 byte mientras que el personaje no-Inglés como el chino, tailandés, se almacena en 3 bytes. Cuando se mezclan chino / tailandés con Inglés, como "ท t", el primer carácter tailandés "ท" utiliza 3 bytes mientras que el segundo carácter Inglés "t" sólo utiliza 1 byte. Las personas que diseñaron varios bytes de codificación se dieron cuenta de que el carácter Inglés no se debe almacenar en 3 bytes mientras que puede caber en 1 byte debido a la pérdida de espacio de almacenamiento.

UTF-16 tiendas cada personaje, ya sea en inglés o no ingleses en una longitud de 2 bytes fija por lo que no es multi-byte, pero pidió un carácter ancho. Es muy adecuado para los idiomas chino / tailandés, donde cada personaje encaja completamente en 2 bytes pero la impresión a UTF-8 salida de la consola necesita una conversión de caracteres anchos de formato de varios bytes utilizando wcstombs de función ().

UTF-32 tiendas cada carácter en una longitud de 4 bytes fija pero nadie lo utilizan para almacenar caracteres debido a una pérdida de espacio de almacenamiento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top