Skip to main content

Codificación UTF-8

Lo esencial

Aplicaciones en CODESYS puede procesar una amplia variedad de caracteres, por ejemplo, para generar un mensaje de error en varios idiomas. O para mostrar visualizaciones en un idioma seleccionado por el usuario que acepta la entrada del usuario en una amplia variedad de idiomas, caracteres o símbolos.

Si no es necesario un juego de caracteres completo, o si no se debe cambiar un proyecto, se pueden seguir utilizando cadenas codificadas en formato Latin-1.

tabla 3. Tablas de juegos de caracteres

Conjunto de caracteres

Número de página de códigos

Descripción

Codificación de caracteres

ASCII

20127

  • 128 caracteres

  • Adecuado para textos en inglés.

carácter codificado de 7 bits

DOS-Latin-1

819, 850

  • Cumple con la norma ISO 8859

  • Adecuado para idiomas de Europa occidental en la ventana de línea de comandos de Windows

carácter codificado de 8 bits

Latín-1

28591

  • Cumple con ISO-8859-1

  • A menudo se usa para páginas HTML con äöüß pero sin € o, por ejemplo, sin caracteres especiales en francés

carácter codificado de 8 bits

Codificación de Windows 1252

1252

  • Conjunto de caracteres predeterminado de Windows para países de Europa Occidental

  • Windows usa el formato UTF-16 internamente

  • Contiene todos los caracteres de ISO 8859-1 e ISO 8859-15, pero en parte con una codificación diferente

carácter codificado de 8 bits

Unicode

  • Juego de caracteres universal para todos los idiomas posibles, incluidos idiomas históricos, Braille, música o emojis

  • Se pueden mostrar más de 100.000 caracteres.

  • Cada carácter tiene un código numérico.

  • A diferencia de ASCII, se hace una separación entre la asignación de puntos de código a caracteres y la codificación de los caracteres.

  • El código numérico < 128 es compatible con ASCII

  • Los códigos numéricos < 256 son compatibles con ISO 8859-1

Para más información, ver: https://home.unicode.org/

Unicode 14.0

144.697 caracteres

UTF-16

1200

  • Unicode especial

  • Se utiliza en algunos sistemas operativos (Windows, OS X) y lenguajes de programación (Java, .NET) para la representación de caracteres internos

  • Cabe señalar que las diferentes arquitecturas informáticas codifican los caracteres de 4 bytes de manera diferente.

    Orden de bytes Little Endian para UTF-16LE

Caracteres codificados de 16 bits

Los caracteres se codifican en 2 bytes o en 4 bytes.

UTF-8

65001

  • Formato de codificación orientado a bytes de caracteres Unicode

  • Más extendida

  • Utilizado en sistemas operativos GNU/Linux y Unix, y en diversos servicios de Internet (correo electrónico, web, navegador)

  • Compatible con caracteres ASCII en los primeros 128 caracteres (0–127)

Tupla de palabras de 8 bits por carácter

Los caracteres están codificados en diferentes longitudes de 1 a 4 bytes.



UTF-8 en CODESYS

Sugerencia

La codificación UTF-8 es la codificación con el conjunto de caracteres más completo. Por lo tanto, se recomienda que habilite la codificación UTF-8 para nuevos proyectos, así como para proyectos existentes que se utilizarán en un nuevo contexto.

tabla 4. Codificación de todo el proyecto en CODESYS

Tipo de datos

Opción de compilación: Codificación UTF8 para STRING

¿Qué codificación se utiliza en todo el proyecto?

STRING

Activado

UTF-8

Discapacitado

Codificación Windows 1252 (codificación predeterminada de Windows)

Latín-1

WSTRING

Activado

UTF-16

Discapacitado

UTF-16



En CODESYS, los STRING El tipo de datos se puede codificar en formatos Latin-1 o UTF-8. los WSTRING tipo de datos siempre codifica sus caracteres como Unicode en UTF-16.

Codificación de un literal de cadena única en formato UTF-8

Incluso si el formato de codificación de todo el proyecto se establece en Latin-1, puede codificar un solo literal en formato UTF-8. Para hacer esto, agregue el UTF8# escriba el prefijo del literal.

{attribute 'monitoring_encoding' := 'UTF-8'}
strVarUtf8: STRING := UTF8#'你好,世界!ÜüÄäÖö';

Para obtener más información, consulte: Constante: Cadena UTF8#; Atributo de pragma: monitoring_encoding

Conversión de cadenas para codificación UTF-8

Si ha habilitado la codificación UTF-8 en todo el proyecto, puede usar las funciones de conversión de cadenas como de costumbre.

manipulación de cadenas

Use funciones de biblioteca para manipular sus cadenas.

Si STRING deben manipularse las variables, entonces un acceso de índice a una variable en formato ASCII a menudo conduce al resultado deseado. Es mejor no usar esta construcción. No es solo un mal estilo de programación. Para empeorar las cosas, con la codificación UTF-8, el acceso al índice conduce a una manipulación de cadenas no deseada.

Codificación UTF-8 solo para la configuración de todo el proyecto

Se usa una codificación UTF-8 si la opción de compilación de todo el proyecto Codificación UTF8 para STRING está habilitado. Las funciones de la biblioteca y los complementos también se orientan de acuerdo con esta configuración.

Si usa cadenas codificadas en UTF-8 individuales, debe asegurarse de que se interpreten correctamente donde sea que se usen. Por ejemplo, una variable de cadena en el servidor OPC se convertirá a UTF-8 antes de transferirse a un cliente si no se selecciona la configuración. Valores tales como UTF8#'äöü' entonces sería malinterpretado. Pueden surgir problemas similares al generar cadenas en la visualización.