【问题标题】:Does Fast Report 4 (Delphi 7) support UTF8 using frxUserDataSet?Fast Report 4 (Delphi 7) 是否支持使用 frxUserDataSet 的 UTF8?
【发布时间】:2014-07-31 02:47:48
【问题描述】:

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

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

2) 在 SO 上寻找答案

3) 谷歌搜索

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

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

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

我忘了提到我从 MySql 数据库中获取字符串,并且数据以 UTF8 存储,我什至没有将数据复制到局部变量中:我从数据库中获取的内容被放入了变体中。

有没有办法强制 FastReport 以 Unicode 格式打印接收到的数据?

谢谢

【问题讨论】:

    标签: delphi unicode fastreport


    【解决方案1】:

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

    仅供参考:

    1) 您必须将您的数据库(在我的情况下为 MySql)设置为使用 UTF8

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

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

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

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

    我一直在读到,使用 D7 和 UniCode 几乎是不可能的,但是——只要你使用 XP 及更高版本——就我所看到的而言,它只会更难。不幸的是,我必须使用 XP、D7 并且无法升级。但是,如前所述,我很快就习惯于解决这些问题,所以,在未来,我希望能够像大家一直在这里帮助我的方式一样回馈一些帮助:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-30
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 2012-08-27
      相关资源
      最近更新 更多