delphi 7 中的 utf8 解码

2024-03-23

我需要使用 delphi 7 将字符串从 utf8 转换为宽字符串。谁能告诉我为什么下面的代码在delphi 7中不起作用? Utf8Decode 函数的参数只是一个示例。

var ws: WideString;
begin
   ws := Utf8Decode('[أمبير] خطأ تيار- تيار Ů…ŘŞŮاصل Ů…Ř·Ů„Ů‚');
end;

在delphi 7中它给了我很多问号,但是在bds2006中它运行良好。

我是否需要打开一些编译器指令,或者如何在 delphi 7 中将 utf8String 转换为 Widestring?

SOLUTION

Utf8Decode函数没有任何问题,Delphi Code Insight Tooltip表达式求值输出误导了我,它无法显示Widestrings。见下图:

但 MessageBoxW 可以显示文本:


我认为问题在于 Delphi 7 只能对源文件使用 ANSI。 Delphi 的更高版本将对源文件使用 UTF-8,事实上您可以指定您希望对源文件使用的编码。

如果将 UTF-8 编码的字符串解释为 ANSI(例如使用 Notepad++),则可以将 UTF-8 编码的文字嵌入到 ANSI 源代码文件中。例如,此代码使用 Delphi 6 生成一个包含文本的消息框。

ws := UTF8Decode('[ŘÅمبير] خط؊تيار- تيار Ů…ŘŞŮاصل Ů…Ř·Ů„Ů‚');
MessageBoxW(0, PWideChar(ws), 
  PWideChar(WideString(FloatToStr(CompilerVersion))), 0);

尝试像这样处理字符串文字根本不切实际。您可能需要开始将它们放入资源中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

delphi 7 中的 utf8 解码 的相关文章

随机推荐

  • 无法使用 C# 连接到密码加密的 MS Access 2016 数据库

    当我尝试连接到 MS Access 2016 数据库时 它无需密码即可完美连接 但是当我在使用密码加密后尝试连接到同一数据库时 出现以下错误 无法打开数据库 它可能不是您的应用程序识别的数据库 或者文件可能已损坏 我不知道我应该做什么 我的
  • 带有auto的initializer_list包含多个表达式

    相当简单的问题 auto x11 1 2 3 4 auto x1 1 2 3 4 auto x22 1 0 2 25 3 5 auto x2 1 0 2 25 3 5 据我了解 这里应该没有什么区别 或不 但是 使用 llvm clang
  • OpenJPA 2.1.1 - 找不到元素“persistence”的声明

    我刚刚下载了http www apache org dyn closer cgi openejb 4 0 0 beta 1 apache tomee 1 0 0 beta 1 webprofile zip http www apache o
  • 如何发出返回引用的动态方法?

    我正在浏览 ref 返回的来龙去脉 并且在发出由 ref 返回的动态方法时遇到问题 手工制作的 lambda 表达式和现有方法按预期工作 class Widget public int Length delegate ref int Wid
  • 如何键入组织捕获的动态文件条目

    我试图弄清楚是否有某种方法可以创建动态文件名以在 emacs org mode 中捕获 z test entry file headline A date specific headline Notes prompt 是否有一些简单的方法将
  • 如何进入android studio中的文件资源管理器

    好吧 我不知道如何进入 android studio 中的文件资源管理器 我已经尝试搜索堆栈溢出 并发现了我所问的相同问题 但那里的解决方案不起作用 那么有人可以通过屏幕截图告诉我如何进入文件资源管理器吗 对于 Android Studio
  • 如何检查字符串中是否包含特定单词?

    a how are you if strpos a are false echo true 在 PHP 中 我们可以使用上面的代码来检查字符串是否包含特定单词 但是如何在 JavaScript jQuery 中执行相同的功能 你可以为此使用
  • 如何修复 flutter 上的“simple_permissions”错误?

    当我在 flutter 项目上运行包含 simple permissions 的代码时出现错误 Initializing gradle Resolving dependencies Running Gradle task assembleD
  • 散景中的多线悬停

    正如在这个问题中 多线散景和 HoverTool https stackoverflow com questions 32975709 bokeh multi line and hovertool 我发现悬停工具没有针对多线图实现 这是一个
  • 从 UIWebView 创建 PDF 文件

    void createPDFfromUIView UIView aView saveToDocumentsWithFileName NSString aFilename Creates a mutable data object for u
  • 有没有办法在 Objective-C 中使用 Swift 结构而不将它们作为类?

    我有几个简单的structs在 swift 文件中用 swift 编写 这些structs非常简单 几乎只包含字符串 struct Letter struct A static let aSome String descASome stat
  • 汇总数据框忽略重复

    我有一个数据框 其中一列中有重复的条目 我想根据该专栏总结其他专栏 我希望摘要在进行摘要时考虑每个唯一条目而不是总数 例如 在下面的数据框示例中 如果我想回答以下问题受访者中有多少人是年轻人 中年人和老年人 RefID 1 1 在总结 ag
  • 如何解决错误:预期标识符或“(”

    我正在编程的东西有问题 我一遍又一遍地收到这个错误 jharvard appliance Dropbox pset1 make mario clang ggdb3 O0 std c99 Wall Werror mario c lcs50 l
  • (obj == null) vs (null == obj)?

    我的老板说我应该使用null obj 因为它比obj null 但他不记得为什么要这样做 有什么理由使用null obj 我以某种方式感觉到了 相反 经过谷歌搜索后 我唯一发现的是 在 C 中 它可以防止您意外地在条件结构中键入 obj n
  • iPhone文档文件夹库/缓存安全问题

    我开发了一款iOS应用程序 出于安全原因 我将所有音频 视频文件下载到下的 Documents 文件夹中库 缓存 对于使用 iTunes 最终用户无法备份此视频 但有些外部软件很容易打开库 缓存并从此文件夹下载所有文件 我的问题是如何保护此
  • 如何在IntelliJ 2021.2.2中使用Lombok插件?

    我是从 C 开始接触 Java 的 我一直在努力熟悉这门语言 我正在尝试使用 IntelliJ IDEA 的 lombok 插件 但它似乎根本不适合我 这是我的IDEA无法识别 value 注释的屏幕截图 https i stack img
  • 您能否将多个不同的值类型分配给重复的 Protobuf 消息中的一个字段?

    我正在尝试对客户端进行逆向工程 该客户端将音频文件上传到服务器 然后在单独的请求中上传文件的元数据 元数据在 Protobuf 中序列化 并且使用相当简单且可读的结构 这是之后的样子protoc decode raw 1 1 title 2
  • 对 Django 模板中的相关项目进行排序

    是否可以对 DJango 模板中的一组相关项目进行排序 即 这段代码 为了清楚起见 省略了 HTML 标签 for event in eventsCollection event location for attendee in event
  • laravel 一个帐户下有多个电子邮件地址

    我的 Laravel 应用程序要求用户可以拥有多个可用于登录的电子邮件地址 我的问题是 如何允许用户在一个帐户下拥有多个电子邮件地址 我必须记住 每封电子邮件只能由一个用户使用 我的想法是为电子邮件创建一个单独的表 其中包含用户 ID 我仍
  • delphi 7 中的 utf8 解码

    我需要使用 delphi 7 将字符串从 utf8 转换为宽字符串 谁能告诉我为什么下面的代码在delphi 7中不起作用 Utf8Decode 函数的参数只是一个示例 var ws WideString begin ws Utf8Deco