gpt4 book ai didi

jsp - 导出为 Excel、PDF、CSV 文件不支持阿拉伯语

转载 作者:行者123 更新时间:2023-11-28 22:22:51 25 4
gpt4 key购买 nike

我有 tomcat6 并在其中使用 open report application。当我将任何报告导出为 excel 或 pdf 时,它不支持阿拉伯语。请问有人可以帮助我吗?您可以在下面找到 jsp 页面代码。


<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
<%@page import="org.efs.openreports.util.DisplayProperty"%>
<%@page import="org.efs.openreports.objects.Report"%>
<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<s:include value="Banner.jsp" />
<s:if test="report == null || !report.isDisplayInline()">

<a class="back-link img-report-small" href="reportList.action"><s:text name="link.back.reports"/></a>
<a class="back-link img-group-small" href="reportGroup.action"><s:text name="link.back.groups"/></a>

<br/>

<s:actionerror/>
<div align="center">
<div class="important img-queryreport" id="instructions"><s:property value="report.name"/></div>
</div>
</s:if>

<div align="center">

<s:set name="results" value="results" scope="request" />
<s:set name="properties" value="properties" scope="request" />
<s:set name="report" value="report" scope="request" />
<% DisplayProperty[] displayProperties = (DisplayProperty[]) request.getAttribute("properties");
request.setCharacterEncoding("UTF-8");
Report report = (Report) request.getAttribute("report");%>

<display:table name="results" class="displayTag" sort="list" export="true" pagesize="20" requestURI="queryReportResult.action?tab=PRODUCTIVITY" excludedParams="org.apache.struts.taglib.html.TOKEN">
<% for (int i=0; i < displayProperties.length; i++) { %>
<display:column property="<%=displayProperties[i].getName()%>" title="<%=displayProperties[i].getDisplayName()%>" sortable="true" headerClass="sortable" />
<% } %>
<display:setProperty name="export.pdf" value="true"/>
<display:setProperty name="export.xml.filename" value="<%=report.getName() + ".xml"%>"/>
<display:setProperty name="export.pdf.filename" value="<%=report.getName() + ".pdf"%>"/>
<display:setProperty name="export.csv.filename" value="<%=report.getName() + ".csv"%>"/>
<display:setProperty name="export.excel.filename" value="<%=report.getName() + ".xls"%>"/>
</display:table>


<s:if test="#session.user.scheduler">

<s:text name="queryReport.scheduleReport"/>
<a href="reportOptions.action?reportId=<%=report.getId()%>&submitSchedule=true&exportType=3">CSV</a> |
<a href="reportOptions.action?reportId=<%=report.getId()%>&submitSchedule=true&exportType=1">Excel</a> |
<a href="reportOptions.action?reportId=<%=report.getId()%>&submitSchedule=true&exportType=0">PDF</a>

</s:if>

</div>

<s:if test="report == null || !report.isDisplayInline()">

<s:include value="Footer.jsp" />

</s:if>

请快帮帮我...

最佳答案

我在 JBoss 下使用从 Stripes MVC 应用程序中挑选的 Displaytag 1.2 遇到了类似的问题。

当数据库 (MySQL) 提供包含以 UTF-8 编码的斯堪的纳维亚语言字符 的字符串时,这些表格的 CSV 和 Excel 导出已损坏,即下载的文件不包含任何数据或一个小文件大量无用的损坏数据。

我认为与数据相关的主要问题是关于芬兰字符的编码,它属于 ISO-8859-1 而不是 UTF-8(参见 http://en.wikipedia.org/wiki/ISO/IEC_8859-1)。

对我有用的修复是:

  1. 将其添加到 Stripes Action Bean:

    getContext().getResponse().setCharacterEncoding("UTF-8");
    getContext().getResponse().setContentType("application/vnd.ms-excel;charset=UTF-8");
  2. 将其添加到相应的 JSP 中:

    <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

在此之后,我能够从 Displaytag 表中成功下载 CSV 和 Excel 文件,其中包含使用来自斯堪的纳维亚语言的 UTF-8 字符编码的数据。

关于jsp - 导出为 Excel、PDF、CSV 文件不支持阿拉伯语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7583570/

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