【发布时间】:2017-11-19 15:30:19
【问题描述】:
拉撒路Wiki状态
Lazarus(实际上是它的 LazUtils 包)利用了该 API 并将其更改为 UTF-8 (CP_UTF8)。这意味着 Windows 用户现在也使用 RTL 中的 UTF-8 字符串
在我们的跨平台和跨编译器代码中,我们希望检测这种特定情况。 GetACP() Windows API 函数仍然返回“1252”,Lazarus 中的 GetDefaultTextEncoding() 函数也是如此。但是文本(特别是 FindFirst() 函数返回的文件名)包含具有 UTF8 编码文件名的字符串,并且字符串(变量)的代码页也是 65001。
那么,我们如何确定 RTL 默认使用 UTF8 字符串?我花了几个小时试图从 Lazarus 源代码中弄清楚这一点,但可能我遗漏了一些东西......
我知道在许多情况下,我们需要检查每个特定字符串的代码页,但我对找出默认 RTL 代码页的方法很感兴趣,它在 Lazarus 中是 UTF8,但在 FPC/Windows 中是 Windows 定义的没有拉撒路。
【问题讨论】:
标签: utf-8 lazarus freepascal