Skip to main content

UTF-8 编码

基本

应用在 CODESYS 可以处理各种各样的字符,例如,以各种语言输出错误消息。或者以用户选择的语言显示可视化,该语言接受各种语言、字符或符号的用户输入。

如果不需要全面的字符集,或者不应该更改项目,则仍可以使用以 Latin-1 格式编码的字符串。

3. 字符集表

字符集

代码页码

描述

字符编码

ASCII

20127

  • 128 个字符

  • 适用于英文文本

7 位编码字符

DOS-Latin-1

819, 850

  • 符合 ISO 8859

  • 适用于 Windows 命令行窗口中的西欧语言

8位编码字符

拉丁语-1

28591

  • 符合 ISO-8859-1

  • 通常用于带有 äöüß 但没有 € 或例如没有特殊法语字符的 HTML 页面

8位编码字符

Windows 1252 编码

1252

  • 西欧国家的默认 Windows 字符集

  • Windows 内部使用 UTF-16 格式

  • 包含 ISO 8859-1 和 ISO 8859-15 中的所有字符,但部分编码不同

8位编码字符

统一码

  • 适用于所有可能语言的通用字符集,包括历史语言、盲文、音乐或表情符号

  • 可显示超过 100,000 个字符。

  • 每个字符都有一个数字代码。

  • 与 ASCII 相比,字符的代码点分配和字符的编码是分开的。

  • 数字代码 < 128 与 ASCII 兼容

  • < 256 的数字代码与 ISO 8859-1 兼容

有关更多信息,请参阅: https://home.unicode.org/

统一码 14.0

144,697 个字符

UTF-16

1200

  • 特殊 Unicode

  • 在某些操作系统(Windows、OS X)和编程语言(Java、.NET)中用于内部字符表示

  • 应该注意的是,不同的计算机体系结构对 4 字节字符进行不同的编码。

    UTF-16LE 的小端字节顺序

16 位编码字符

字符被编码为 2 个字节或 4 个字节。

UTF-8

65001

  • Unicode字符的面向字节的编码格式

  • 最广泛的

  • 用于 GNU/Linux 和 Unix 操作系统,以及各种 Internet 服务(电子邮件、网络、浏览器)

  • 与前 128 个字符 (0–127) 中的 ASCII 字符兼容

每个字符的 8 位字元组

字符以 1 到 4 个字节的不同长度编码。



UTF-8 输入 CODESYS

提示

UTF-8 编码是字符集最全面的编码。因此,建议您为新项目以及现有项目启用 UTF-8 编码以在新环境中使用。

4. 项目范围内的编码 CODESYS

数据类型

编译选项:STRING 的 UTF8 编码

项目范围内使用哪种编码?

STRING

启用

UTF-8

已禁用

Windows 1252 编码(默认 Windows 编码)

拉丁语-1

WSTRING

启用

UTF-16

已禁用

UTF-16



CODESYS, 这 STRING 数据类型可以用 Latin-1 或 UTF-8 格式编码。这 WSTRING 数据类型始终将其字符编码为 UTF-16 中的 Unicode。

以 UTF-8 格式编码单个字符串文字

即使项目范围的编码格式设置为 Latin-1,您也可以将单个文字编码为 UTF-8 格式。为此,请添加 UTF8# 文字的类型前缀。

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

有关详细信息,请参阅: 常量: UTF8#字符串; Pragma 属性: monitoring_encoding

UTF-8 编码的字符串转换

如果您在项目范围内启用了 UTF-8 编码,则可以照常使用字符串转换功能。

字符串操作

使用库函数来操作您的字符串。

如果 STRING 变量应该被操纵,那么对 ASCII 格式变量的索引访问通常会导致所需的结果。最好不要使用这种结构。这不仅仅是一种糟糕的编程风格。更糟糕的是,使用 UTF-8 编码,索引访问会导致不必要的字符串操作。

UTF-8 编码仅用于项目范围的配置

如果项目范围的编译选项使用 UTF-8 编码 字符串的 UTF8 编码 已启用。然后,库函数和附加组件也将根据此设置进行定向。

如果您使用单个 UTF-8 编码的字符串,那么您必须确保在使用它们的任何地方都能正确解释它们。例如,如果未选择该设置,则 OPC 服务器中的字符串变量将在传输到客户端之前转换为 UTF-8。值如 UTF8#'äöü' 那么就会被误解。在可视化中输出字符串时可能会出现类似的问题。