Grails Jasper报表模板中的变音字符

Grails Jasper报表模板中的变音字符,grails,jasper-reports,diacritics,Grails,Jasper Reports,Diacritics,我必须使用波兰语来填写我的报告内容,因此我必须使用变音字符(ą,ć,ę,ł,ó,ż,ź)。我对它们有问题,它们在导出jasper打印到输出后被跳过。当我在模板中写“lubiężó322; wie”(波兰语的意思是“我喜欢海龟”)时,输出pdf只包含“lubi wie”(顺便说一句,它的意思是“他喜欢他知道”-所以变化很大;)。甚至在丢失的字母处也没有空格。他们只是被跳过了 另外一个提示是,这些字符串是报表中的静态文本还是动态$p{} 我的问题是:“如何让它们出现” 我在尝试(没有成功): 使用J

我必须使用波兰语来填写我的报告内容,因此我必须使用变音字符(ą,ć,ę,ł,ó,ż,ź)。我对它们有问题,它们在导出jasper打印到输出后被跳过。当我在模板中写“lubiężó322; wie”(波兰语的意思是“我喜欢海龟”)时,输出pdf只包含
“lubi wie”
(顺便说一句,它的意思是“他喜欢他知道”-所以变化很大;)。甚至在丢失的字母处也没有空格。他们只是被跳过了

另外一个提示是,这些字符串是报表中的静态文本还是动态
$p{}

我的问题是:“如何让它们出现”

我在尝试(没有成功):

  • 使用
    JRPdfExporter
  • 设置
    JRProperties.setProperty(“net.sf.jasperreports.default.pdf.encoding”,“UTF-8”)
  • 设置
    JRProperties.setProperty(“net.sf.jasperreports.export.character.encoding”,“UTF-8”)
  • 将报表区域设置放入参数映射(
    JasperFillManager.fillReport


  • 解决方案:在我的例子中,将字体附加到类路径、定义自己的jasperreports\u extension.properties和fonts.xml就足够了。细节。如果有人使用Grails框架来做这件事(比如我),这是一个更准确的例子。附加和必需的步骤是设置
    JRProperties.setProperty(“net.sf.jasperreports.default.pdf.encoding”,“Cp1250”)
    ,正如Wojtek所写。仍然不知道为什么,但我知道答案后会更新解决方案。

    如果您在Windows计算机上工作:

    在JasperReports jar归档文件中,您会发现一个名为default的配置文件。JasperReports打开它并按如下方式更改以下属性的值:

    net.sf.jasperreports.default.pdf.encoding=Cp1250
    
    您还可以使用:

    JRProperties.setProperty(“net.sf.jasperreports.default.pdf.encoding”,“Cp1250”)

    但我认为第一个解决办法是更干净。还请确保字段的pdf字体支持Alex K所述的变音字符。AFAIK这些字体在字体选择组合框中以粗体显示


    如果您想在报表中使用UTF-8字体,您必须首先将它们放在类路径上,并显式地包含它们。

    是否在iReport中检查了导出?您使用了什么导出(pdf、xls、doc)?是的,我查过了。看起来不错。我使用pdf。你使用的字体应该支持变音字符。您可以阅读有关Thx Alex的信息,字体扩展提示很有价值。如果你将答案作为答案发布,我会投票支持你的答案。设置PDF字体在3年前就被弃用了。使用字体扩展要好得多。你好,Wojtek。我再次修改了带有字体扩展的解决方案,但这还不够。在编写时设置net.sf.jasperreports.default.pdf.encoding=Cp1250后,它开始工作。你知道我为什么需要Cp1250吗?我的模型中的字符串是utf-8,jasper模板(jrxml)是utf-8。那么为什么是cp1250呢?我是一个Java/Linux的家伙,我担心cp1250以后会报复我。我假设承载触发报表创建的JVM的机器是基于Linux的?