Builder c ++ Rave报告用西里尔语编码问题

时间:2011-04-05 08:26:02

标签: c++ character-encoding internationalization rave-reports cp1251

当我在pdf \ html文件中尝试保存rave项目时,编码不正确。 选择格式并按SAVE时,它通常保存在iso-8859-1代码中。 但我需要cp1251(西里尔文)。

例如“Ïëîùàäü”而不是“Площадь”。

2 个答案:

答案 0 :(得分:0)

我猜你问题的最佳解决方案是使用Unicode,而不是像CP1251这样的代码页。是否可以将Unicode与Rave Reports一起使用?

答案 1 :(得分:0)

当我想要将reprt转换为pdf格式时,我遇到了同样的问题。我必须创建TRvRenderPDF并将其设置为RenderObject,但不能正确查看pdf文件。

  1. TRvRenderPDF组件不兼容unicode(非常糟糕),这就是为什么报告中的所有文本都使用活动代码页转换为Ansi的原因(对于西里尔文,它是CP1251)。现在我们有pdf文件,文本为CP1251编码。
  2. 默认情况下,TRvRenderPDF使用字体TYPE1 Helvetica生成pdf(格式为pdf,它是内置的标准)。但文本是用ISO 8859-1(或CP1252)编码解释的,但编码是CP1251,这就是为什么我们有“Ïëîùàäü”或类似的东西。

  3. 我们能做什么:

    1. 获取字体TYPE1(CP1252),其中服务符号(CP1251中的西里尔字母中的数字)替换为西里尔字形。例如a link,我们需要安装它。
    2. 现在我们需要用新的字体名称(AGHelvetica)替换生成的pdf文档中的旧字体名称(Helvetica)。您可以使用文本编辑器或我的程序(阅读文件 - > find - > replace - >保存文件)来删除它。
    3. 所有情况。

      P.S。抱歉我的英文。

      P.P.S。如果pdf的set属性渲染EmbedBaseFonts = true,则使用TrueType字体保存pdf文档,但问题仍然存在。 Neew要看到unicode渲染?但不是这个。