SysFile:以 UTF-8 格式保存文件
在 IEC 代码中使用 WSTRING 类型时,数据可以以 UTF-8 格式存储。 通过使用 StringUtiIs 库中的 ConvertUTF16toUTF8 函数,文本被转换为 UTF-8 格式并可以保存到文件中。
- 创建标准项目并选择CODESYS Control Win V3 作为设备。
- 通过网络扫描连接目标系统。

- 打开库管理器并添加以下库: StringUtils SysFile SysTypes2 Interfaces

- 修改 PLC_PRG 如下:
声明
VAR
xWrite : BOOL;
szFileName : STRING(128) := 'c:/tmp/TestUTF8.txt';
hFile : SysTypes.RTS_IEC_HANDLE := SysTypes.RTS_INVALID_HANDLE;
iecResult : SysTypes.RTS_IEC_RESULT;
wsTextLine : WSTRING(10) := "Übersetzer";
sUTF8TextLine : STRING;
udiPos : __XWORD;
udiWrite : __XWORD;
END_VAR
实现
IF xWrite THEN
xWrite := FALSE;
hFile := SysFileOpen(szFile:=szFileName, am:=SysFile.AM_Write , pResult:=ADR(iecResult));
IF hFile <> RTS_INVALID_HANDLE THEN
Stu.ConvertUTF16toUTF8(sourceStart := ADR(wsTextLine), targetStart := ADR(sUTF8TextLine), dwTargetBufferSize := SIZEOF(wsTextLine), bStrictConversion := TRUE);
udiWrite := SysFileWrite(hFile:=hFile, pbyBuffer:=ADR(sUTF8TextLine), ulSize:=INT_TO_UDINT(LEN(sUTF8TextLine)), pResult:=ADR(iecResult));
iecResult := SysFileClose(hFile:=hFile);
END_IF
END_IF
- 启动项目并将 xWrite 变量设置为 TRUE。

如果在编辑器中查看该文件,则文本会正确显示:
