我遇到了編碼和碼頭問題。碼頭9,字符編碼UTF-8
我的所有文件都以UTF-8編碼,幷包含正確的HTML元標記以指定UTF-8。
到現在爲止,我的所有UTF-8文件都有BOM,而且我沒有問題。但是現在我正在使用不同的文本編輯器,並且我注意到現在生成的我的UTF-8文件沒有BOM,從我閱讀的內容來看,這是一件好事,因此我決定從現在開始不使用BOM。
但問題是,如果Jetty沒有BOM,它似乎將所有JSP文件轉換爲ISO8859-1,然後再將它們發送到瀏覽器。它會導致問題,因爲由於它們具有用於UTF-8的元標記,所以瀏覽器將文件解釋爲UTF-8,並且重音符號和其他特殊字符不起作用。
我找到了一個解決辦法,到目前爲止這是開始用我所有的JSP文件:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
這工作,但它是kindof煩人,因爲我必須在每個文件的開頭添加了這一點,我寧願有一些服務器範圍的參數來避免這種情況,如果可能的話,但因爲我花了幾個小時瀏覽網絡尋求解決方案,我開始認爲沒有。
我試圖
JAVA_OPTIONS+=("-Dfile.encoding=UTF-8")
碼頭開始時如在其他線程建議添加到我的JAVA_OPTIONS,但它似乎並沒有做任何事情。
任何幫助將不勝感激。
OP願意找到一個像寬參數的方式來設置編碼,而不是通過JSP。 – mob41
Apache Jasper JSP引擎完全控制在這裏。 Jetty遵循Apache Jasper JSP引擎生成的Servlet行爲和原始輸出字節,並將這些字節發送到客戶端。 Jetty唯一能做的就是應用'Transfer-Encoding'(分塊)或'Content-Encoding'(gzip)。 –
謝謝你,它的工作原理和解釋有助於理解它的工作原理。這比沒有好。 – gouessej