記錄一次亂碼問題修復經歷!排查修復Poi-tl使用HttpServletResponse匯出Word亂碼問題

攻城獅Chova發表於2022-01-02

問題

  • Poi-tlHttpServletResponse匯出Word亂碼問題:

    • 檔名使用中文,中文名亂碼
    • 匯出的檔案下載後亂碼

      原因

  • 檔名中文亂碼:

    • 沒有設定檔名的編碼規則
  • 檔案下載亂碼:

    • RESTful中的Controller層錯誤地使用了PostMapping

      解決辦法

  • 檔名亂碼:

    String attachName = new String(("Xxx.docx").getBytes(), "ISO-8859-1");
    response.setHeader("Content-disposition", "attachment;filename=" + attachName);
  • 檔案下載亂碼:

    • Word匯出的介面使用==GetMapping==
    • 使用==Request URL==來獲取檔案的下載
  • 獲取Word模版路徑:

    • 使用InputStream工具類獲取路徑的檔案

      // 使用InputStream流獲取Word模版
      InputStream fis = this.getClass().getResourceAsStream("/template/xxxTemplate.docx");

      總結

  • 根據框架文件好好學習框架的用法後再根據例項開發相關功能
  • 注意框架中的使用注意點和高階用法
  • 將高階用法與專案實際結合起來,選擇使用的最佳方案

相關文章