【问题标题】:Displaying Baht Character Symbol in Delphi6Delphi6中显示泰铢字符符号
【发布时间】:2014-06-23 08:37:12
【问题描述】:

我们的一个旧应用程序在 Delphi6 中,我们无法在此应用程序的标签和文本编辑中显示货币符号“泰铢”。

我们使用泰铢的 Unicode 来设置标签/文本编辑的文本(即 0E3F),但它始终呈现为“?”。

我们尝试将上述标签/文本编辑的字体属性更改为 ANSI_CHARSET、DEFAULT_CHARSET(甚至 THAI_CHARSET),但没有成功。并且选择的字体类型是具有泰铢货币符号的“Microsoft Sans Serif”(不是没有泰铢货币符号的“MS Sans Serif”)。

有人在Delphi6中遇到过这种情况吗?如果有,有什么解决办法吗?

提前谢谢..!!

【问题讨论】:

    标签: delphi unicode delphi-6


    【解决方案1】:

    我们使用泰铢的 Unicode 来设置标签/文本编辑的文本(即 0E3F),但它始终呈现为“?”。

    ? 字符表示当 Unicode 字符转换为 ANSI 时,在使用的 ANSI 代码页中未找到任何字符。您的选择:

    1. 使用包含此字符的 ANSI 代码页,即 Windows-874。
    2. 停止使用 ANSI 并开始使用 Unicode。

    后一个选项更好,但在 Delphi 6 中当然有点棘手,它是一个开箱即用的基于 ANSI 的工具。要使用 Delphi 6 制作 Unicode GUI,您需要使用 TNT Unicode 组件。

    【讨论】:

    • 感谢您的回复。我尝试了您的选项 1,发现我们可以在 Delphi 2009 及更高版本中将代码页指定为“AnsiString(874)”。关于如何在 Delphi6 中指定代码页的任何想法?
    • 您运行它的机器上的语言设置是什么?选项 2 是您需要的。在 2014 年继续使用 ANSI 确实不是一个好主意。好吧,真的,选项 3,升级到现代 Unicode Delphi 确实是您所需要的。
    • 机器中的语言设置为“英语(美国)”。选项 2,如果没有任何效果,我将保留作为备份(因为客户端不喜欢解决方案中的任何其他第三方库,该解决方案在过去 10 年中已经增长并且已经包含大量库.. ;))。是的,我完全同意升级到较新版本的 Delphi,但这也不是一个选择.. :|
    • 客户希望您使用古老的pre-Unicode Delphi,不添加Unicode 库,并支持国际文本。客户不讲理。我需要深入研究一下如何修改代码页。
    • 好的,我认为您应该将机器范围的语言设置更改为泰语。那可能对你没有吸引力。如果您需要做的只是用 Unicode 内容绘制一些文本,那么您可以编写自己的控件,称为 DrawTextW。但我个人不想花更多时间帮助您实现选项 1,因为这是一个糟糕的主意。如果其他人想帮助你做到这一点,很好。
    【解决方案2】:

    Windows 的应用程序charmap.exe,启用了高级视图,有一个字符集选择,当您选择字符时,底部的状态行会在 unicode 旁边显示该字符的 256 位十六进制代码代码点。

    (在开始菜单中搜索“字符映射”,或者按 Windows 键 + R 并输入“字符映射”)

    如果我在这里尝试使用“Windows: Thai”,我会得到泰铢符号的代码 0xDF。因此,如果您在字符串中写入 #$DF#223,或者在输入 0 2 2 3 时按 Alt,它应该可以工作。

    【讨论】:

    • 用户在 Windows-1252 上运行
    • @David - 然后还需要设置字体字符集 THAI_CHARSET。
    【解决方案3】:

    本机 pre-Unicode Delphi 控件仅允许在具有此特定系统区域设置的系统上输入特定的本地(例如泰语)字符。

    用于 Unicode 之前的 Delphi 版本的解决方法是用 TNT Unicode 控件替换本机 VCL 控件。

    我不知道今天 TNT Unicode 控件的状态。您可以尝试在 google 上搜索。

    【讨论】:

    • 我倾向于第一段的结论。是对的吗?没有办法伪造每个应用代码页?
    • 我不记得什么可以做,什么不能做;标准的完整和正确的解决方案是使用 TNT Unicode 控件而不是等效的 ANSI VCL 控件。
    • 这就是我提供的解决方案。 FWIW,TNT Unicode 控件仍然可用,并且仍然像以前一样工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-09
    • 2012-09-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多