gpt4 book ai didi

java - Apache POI 的编码问题

转载 作者:行者123 更新时间:2023-11-30 11:17:05 24 4
gpt4 key购买 nike

我正在使用 Apache POI 创建 MS Excel 文件,当我在本地主机上使用它时一切正常。但是当我在 Google App Engine 上部署项目然后尝试在 MS Excel 中打开创建的文件时,我会注意到我所有的特殊字符都变成了问号“?”。你们有没有人能告诉我为什么它在本地主机上工作但在部署后无法显示特殊字符。

public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
try {
OutputStream out = null;
try
{
String dataa = req.getParameter("dataa");
String json = URLDecoder.decode(dataa, "UTF-8");
Gson gson = new Gson();
ExcelData excelData = gson.fromJson(json, ExcelData.class);

HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet1 = (HSSFSheet) workbook.createSheet("myData");

// workbook creation...

ByteArrayOutputStream outByteStream = new ByteArrayOutputStream();
workbook.write(outByteStream);
byte [] outArray = outByteStream.toByteArray();
res.setContentType("application/ms-excel");
res.setContentLength(outArray.length);
res.setHeader("Expires:", "0");
res.setHeader("Content-Disposition", "attachment; filename=raport.xls");

out = res.getOutputStream();
out.write(outArray);
out.flush();

} catch (Exception e)
{
throw new ServletException("Exception in Excel Sample Servlet", e);
} finally
{
if (out != null)
out.close();
}
} catch (Exception ex) {
throw new ServletException(ex);
}
}

最佳答案

问题已解决

当您尝试调试问题一段时间然后在 stackoverflow 上发布后立即找到答案时,这很有趣 :) 不管怎样,问题就在这里:

String data = URLEncoder.encode(someString);
String data2 = URLDecoder.decode(data, "UTF-8");

因此,在本地主机上使用 App Engine 本地服务器数据 == data2,但在生产服务器上数据 != data2,区别在于编码为问号的特殊字符。

// solution
String data = URLEncoder.encode(someString, "UTF-8");
String data2 = URLDecoder.decode(data, "UTF-8");

关于java - Apache POI 的编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24564028/

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