如何防止 Lazarus 中的警告 "unicode constant cast with potential data loss"?

How do I prevent the warning "unicode constant cast with potential data loss" in Lazarus?

我正在尝试将 Tricolon Unicode 字符 #$205D 作为标题分配给 Lazarus Windows 程序中的按钮,如下所示:

MyButton.Caption := #5D;

有效,按钮正常显示三分号,但编译器发出警告 "Warning: Unicode constant cast with potential data loss"。

如何正确地将三分号字符分配给 LCL 控件的标题以消除警告?

LCL 使用UTF8 编码但#$205D 是UTF16 字符常量。所以改用 UTF8 编码常量:

const
    CTricolon = #$E2##D;
    //CTricolon = '⁝'; // Also works fine if using character(s) as is in the source

...

    MyButton.Caption := CTricolon;

问题是2字节->(默认)1字节转换的检测是编译时,而默认1字节类型的确切代码页是运行时。

(根据语言环境改变 Windows 编码或在 Lazarus 启动时设置为 UTF8)

编译器警告您这很危险。要修复它,请将源编码设置为 utf8 并分配一个 utf8 字符串。