java匯出錯誤方式與正確方法:(推薦:java影片教學)
错误方式: response.setHeader("Content-Disposition", "inline;filename="+ new String(fileName.getBytes(),"utf-8")); String fileName = aicaseNodeDeptService.getFilename(request)+".xlsx"; response.setCharacterEncoding("UTF-8"); response.setContentType("application/ms-excel"); 正确的方式: response.setHeader("Content-Disposition", "inline;filename="+ new String(fileName.getBytes("utf-8"),"iso8859-1"));
原因:httpheader要求其內容必須為iso8859- 1編碼,在將這些字元傳遞到目的地後,目的地程式再透過相反的方式Strings_utf8 = newString(s_iso88591.getBytes("ISO8859-1"),"UTF-8")來得到正確的中文漢字"中",這樣就既保證了遵守協議規定、也支持中文。
在Java中,String的getBytes()方法是得到一個作業系統預設的編碼格式的位元組數組。這表示在不同的作業系統下,傳回的東西不一樣!
String.getBytes(Stringdecode)方法會根據指定的decode編碼傳回某字串在該編碼下的byte數組表示,如:
byte[] b_gbk = "中".getBytes("GBK"); byte[] b_utf8 = "中".getBytes("UTF-8"); byte[] b_iso88591 = "中".getBytes("ISO8859-1");
將分別回傳"中"這個漢字在GBK、UTF-8和ISO8859-1編碼下的byte數組表示,此時
b_gbk的長度為2,
b_utf8的長度為3,
b_iso88591的長度為1。
而與getBytes相對的,可以透過new String(byte[], decode)的方式來還原這個"中"字,
這個new String(byte[],decode)實際是使用指定的編碼decode來將byte[]解析成字串.
String s_gbk = new String(b_gbk,"GBK"); String s_utf8 = new String(b_utf8,"UTF-8"); String s_iso88591 = new String(b_iso88591,"ISO8859-1");
透過輸出s_gbk、s_utf8和s_iso88591,會發現s_gbk和s_utf8都是"中",而只有s_iso88591是一個不被識別的字元(可以理解為亂碼),為什麼使用ISO8859-1編碼再組合之後,無法還原"中"字?原因很簡單,因為ISO8859-1編碼的編碼表根本就不包含漢字字符,當然也就無法通過"中".getBytes("ISO8859-1");來得到正確的"中"字在ISO8859-1中的編碼值了,所以,再透過newString()來還原就更是無從談起。
因此,透過String.getBytes(Stringdecode)方法來得到byte[]時,一定要確定decode的編碼表中確實存在String表示的碼值,這樣得到的byte[]陣列才能正確被還原。
注意:
有時候,為了讓中文字元適應某些特殊要求(如httpheader要求其內容必須為iso8859-1編碼),可能會透過將中文字元按照位元組方式來編碼的情況,如:
String s_iso88591 = newString("中".getBytes("UTF-8"),"ISO8859-1"),這樣得到的s_iso8859-1字串實際上是三個ISO8859-1中的字元,在將這些字元傳遞到目的地後,目的地程式再透過相反的方式Strings_utf8 = newString(s_iso88591.getBytes("ISO8859-
#更多java知識請關注java基礎教學欄位。
以上是java導出excel亂碼原因及解決方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3 Linux新版
SublimeText3 Linux最新版

Dreamweaver CS6
視覺化網頁開發工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。