基础知识
CODESYS 中的应用程序可以处理各种字符,例如输出各种语言的错误信息。或以用户选择的语言显示可视化效果,接受用户以各种语言、字符或符号输入。如果不需要全面的字符集,或者不需要更改项目,那么仍然可以使用拉丁-1 格式编码的字符串。
|
字符集 |
代码页码 |
说明 |
字符编码 |
|---|---|---|---|
|
ASCII |
20127 |
|
7 位编码字符 |
|
DOS-Latin-1 |
819, 850 |
|
8 位编码字符 |
|
拉丁语-1 |
28591 |
|
8 位编码字符 |
|
Windows 1252 编码 |
1252 |
|
8 位编码字符 |
|
统一码 |
|
|
|
|
Unicode 14.0 |
|
144 697 个字符 |
|
|
UTF-16 |
1200 |
|
16 位编码字符 字符以 2 字节或 4 字节编码。 |
|
UTF-8 |
65001 |
|
每个字符的 8 位字元组 字符的编码长度从 1 到 4 字节不等。 |
UTF-8 中的 CODESYS
UTF-8 编码是字符集最全的编码。因此,建议对新项目以及在新上下文中使用的现有项目启用 UTF-8 编码。
|
数据类型 |
编译选项:STRING 的 UTF8 编码 |
整个项目使用哪种编码? |
|---|---|---|
|
字符串 |
已启用 |
UTF-8 |
|
残疾 |
Windows 1252 编码(Windows 默认编码) 拉丁语-1 |
|
|
钢丝绳 |
已启用 |
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# String; ⮫ “不变:UTF8# String”
Pragma 属性:⮫ monitoring_encoding
UTF-8 编码的字符串转换
如果已在整个项目范围内启用 UTF-8 编码,则可以像往常一样使用字符串转换函数。
字符串操作
使用库函数来处理字符串。
如果需要对“STRING” 变量进行操作,那么对 ASCII 格式的变量进行索引访问往往能得到想要的结果。最好不要使用这种结构。这不仅仅是一种糟糕的编程风格。更糟的是,使用 UTF-8 编码时,索引访问会导致不必要的字符串操作。
UTF-8 编码仅适用于全项目配置
如果启用了整个项目的编译选项UTF8 encoding for STRING ,则会使用 UTF-8 编码。库函数和附加组件也会根据这一设置进行定向。
如果使用单个 UTF-8 编码字符串,则必须确保在使用这些字符串的任何地方都能正确解释它们。例如,如果未选择该设置,OPC 服务器中的字符串变量在传输到客户端之前将被转换为 UTF-8。这样,诸如“UTF8#'äöü'” 这样的值就会被误解。在可视化中输出字符串时也会出现类似问题。