gpt4 book ai didi

delphi - Fast Report 4 (Delphi 7) 是否支持使用 frxUserDataSet 的 UTF8?

转载 作者:行者123 更新时间:2023-12-02 01:13:10 26 4
gpt4 key购买 nike

我已经完成了我的作业,特别是:

1) 阅读完整的 FASTREPORT 4 手册。它没有提到 UTF8,也没有提到 Unicode 支持

2)在这里寻找答案

3)谷歌搜索了一下

如果我设置一个文本字段并用泰语字符填充它,它们会完美打印,所以FastReport可以处理Unicode字符,至少它可以打印它们。

如果我尝试使用 frxUserDataSet 提供的回调“传递”一个值,那么我看到的是一些乱码的非 unicode 文本。特别是,如果我通过了,例如一个由相同的 10 个泰语字符组成的字符串,我看到相同的 3 或 4 个乱码字符“集”重复了十次,所以我确信数据传递正确,但是 FastReport 可能无法知道它们应该是作为 Unicode 处理。

回调要求传回的数据是“variant”类型,所以我想将它们转换为任何类型是完全没有用的,因为variant会接受它们中的任何一个。

我忘了提及,我从 MySql DB 获取字符串,并且数据存储为 UTF8,我什至不将数据复制到本地变量中:我从 DB 获取的内容放入变体中。

有没有办法强制 FastReport 将收到的数据打印为 Unicode?

谢谢

最佳答案

是的,带有 Delphi7 的 FR4 使用 frxUserDataSet 支持 UTF8。

仅供将来引用:

1)您必须将数据库(在我的例子中为 MySql)设置为使用 UTF8

2)您必须将用于访问数据库的组件中的字符集设置为utf8(在我的例子中为“DAC for MySql”,该属性称为ConnectionCharacterSet)

3) 在所有 frxUserDataSet 回调中,在设置“value”变量之前,您必须使用 Utf8decode Delphi 系统例程转换您拥有的任何内容,如下所示:

value := Utf8decode(fReports.q1.FieldValueByFieldName('yourDBfield'));

其中 fReports 是表单名称,q1 是用于访问数据库的组件。

我一直读到,使用 D7 和 Unicode 几乎是不可能的,但是 - 只要你使用 XP 及更高版本 - 从我所看到的来看,这只是更难。不幸的是,我必须使用XP、D7并且无法升级。但是,正如我所说,我很快就习惯了解决这些问题,所以,在未来,我希望能够像每个人一直在这里帮助我一样回馈一些帮助:)

关于delphi - Fast Report 4 (Delphi 7) 是否支持使用 frxUserDataSet 的 UTF8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24139306/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com