我完成了我的作业,特别是:
1)阅读整个FASTREPORT 4手册。它没有提到UTF8,也没有提到Unicode支持
2)在SO
上寻找答案3)用Google搜索
如果我设置了一个文本字段并用泰语字符填充它们,它们就会完美打印,因此FastReport可以处理Unicode字符,至少可以打印它们。
如果我试图通过"使用frxUserDataSet提供的回调的值,然后我看到的是一些乱码的非unicode文本。特别是,如果我通过例如一个由相同的10个泰国字符组成的字符串,我看到相同的" set" 3或4个乱码重复十次,所以我确信数据正确传递,但FastReport可能无法知道它们应该作为Unicode处理。
回调要求传回的数据是"变体"类型,所以我认为将它们转换为任何类型是完全没用的,因为variant会接受它们中的任何一种。
我忘了提到我从MySql DB获取字符串并且数据存储为UTF8,我甚至不将数据复制到本地变量中:我从数据库中获取的内容被放入变体中。 / p>
有没有办法强制FastReport打印以Unicode格式接收的数据?
谢谢
答案 0 :(得分:1)
是的,带有Delphi7的FR4支持使用frxUserDataSet的UTF8。
仅供将来参考:
1)你必须设置你的DB(我的情况下是MySql)才能使用UTF8
2)您必须将用于访问数据库的组件中的字符集设置为utf8(" DAC用于MySql"在我的情况下,属性称为ConnectionCharacterSet)
3)在所有frxUserDataSet回调中,在设置"值"之前变量,你必须使用Utf8decode Delphi系统例程转换你所拥有的任何东西,如:
value:= Utf8decode(fReports.q1.FieldValueByFieldName(' yourDBfield'));
其中fReports是表单名称,q1是用于访问数据库的组件。
我一直在阅读使用D7和UniCode几乎是不可能的,但是 - 只要你使用XP及以上 - 它只会比我看到的更难。不幸的是,我必须使用XP,D7并且无法升级。但是,正如所说的那样,我很快就会习惯于解决这些问题,所以在将来,我希望能够以同样的方式回馈一些帮助,每个人都一直在这里帮助我:)