【发布时间】:2012-02-07 13:36:07
【问题描述】:
我需要使用 delphi 7 将字符串从 utf8 转换为宽字符串。谁能告诉我为什么下面的代码在delphi 7中不起作用? Utf8Decode 函数的参数只是一个示例。
var ws: WideString;
begin
ws := Utf8Decode('[أمبير] خطأ تيار- تيار Ů…ŘŞŮاصل مطلق');
end;
在delphi 7中它给了我很多问号,但是在bds2006中它运行良好。
我是否需要打开一些编译器指令,或者如何在 delphi 7 中将 utf8String 转换为 Widestring?
解决方案
Utf8Decode函数没什么问题,Delphi Code Insight Tooltip表达式求值输出误导了我,无法显示Widestrings。见下图:
但 MessageBoxW 可以显示文本:
【问题讨论】:
-
你首先想做什么?你如何显示 WideString 输出?你真的需要 UTF-8,WideString 已经是 Unicode 了吗?很高兴在这里提供更多详细信息。
-
@JensMühlenhoff utf-8 来自一个 xml 文件,我想将它传递给另一个需要宽字符串的库函数。我使用调试器中的手表来检查值
-
我知道这并不总是一种选择,但是对于 Unicode 支持,值得考虑升级到最新版本的 Delphi,因为 Unicode 支持终于可以正常工作了。