gpt4 book ai didi

utf-8 - iReport预览/导出器输出不处理UTF-8翻译?

转载 作者:行者123 更新时间:2023-12-04 13:43:19 24 4
gpt4 key购买 nike

我正在尝试使我的报告与翻译包一起使用。不管我尝试什么,我似乎都无法为任何语言渲染UTF-8-每个UTF-8字符我都会得到两个残破的字符。

我的报告以此开头:<?xml version="1.0" encoding="UTF-8"?>...但是iReport预览不起作用,

而我的实际代码是这样的:

JRProperties.setProperty("net.sf.jasperreports.default.pdf.encoding", "UTF-8");
exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "UTF-8")

两者似乎都无法输出UTF-8。这可能是怎么回事?我正在拔头发。即使将字体设置为 Arial,我仍然遇到问题。我的Web应用程序使用与Grails相同的字体和类似的捆绑软件,并且在那里我没有任何问题,因此jasperreports特有的情况正在发生。

编辑:
我认为字节顺序标记可能是问题所在,但事实并非如此。我创建了一个基本报告,该报告显示了4.0.2中的失败。

这是资源包:

以及iReport中的输出:

这是 report和用于观察这些结果的 properties文件。

Nore信息:
将属性文件保存为ANSI编码后,我可以获得所有德语字符,包括ä和ß。将属性文件另存为UTF-8时,仅ASCII字符起作用。

最佳答案

Stefan,我知道这不是一个很好的解决方案,但它适用于您的示例。

        <textField>
<reportElement x="49" y="0" width="359" height="38"/>
<textElement>
<font fontName="Arial" pdfEncoding="Identity-H" isPdfEmbedded="true"/>
</textElement>
<textFieldExpression><![CDATA[new String($R{title}.getBytes("ISO-8859-1"), "UTF-8")]]></textFieldExpression>
</textField>

如果您知道源代码页,则转换将为您提供帮助。可能是您可以在报表中传递代码页并将其用作表达式中的参数或变量。

表达式可以像这样:
   <textFieldExpression><![CDATA[new String($R{title}.getBytes($P{codePage}), "UTF-8")]]></textFieldExpression>

或类似的方式,如果您可以在属性文件的标题中传递代码页:
   <textFieldExpression><![CDATA[new String($R{title}.getBytes($R{codePage}), "UTF-8")]]></textFieldExpression>

更新:
添加Arial字体后,我的irfonts.xml(%IREPORT_DIR%\ireport\fonts)具有以下内容:
<?xml version="1.0" encoding="UTF-8"?>

<fontFamilies>
<fontFamily name="Arial">
<normal><![CDATA[arial.ttf]]></normal>
<bold><![CDATA[arialbd.ttf]]></bold>
<italic><![CDATA[ariali.ttf]]></italic>
<boldItalic><![CDATA[arialbi.ttf]]></boldItalic>
<pdfEncoding><![CDATA[Identity-H]]></pdfEncoding>
<pdfEmbedded><![CDATA[false]]></pdfEmbedded>
</fontFamily>

</fontFamilies>

关于utf-8 - iReport预览/导出器输出不处理UTF-8翻译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7436382/

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