eclipse+tomcat,控制檯中文亂碼

1.首先,檢查JSP頁面聲明的編碼是否正確,正確示例(注意標紅的地方):

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Insert title here</title>
    </head>
    <body>
    
    </body>
</html>

2.在確認步驟一沒有問題後,接下來檢查項目屬性編碼、 JSP 頁面屬性的編碼和 Java 文件的屬性編碼,項目屬性編碼和文件屬性編碼也需要統一設置爲 UTF-8 

3.檢查 Tomcat 的編碼,需要把 Tomcat 的編碼也設置爲 UTF-8,找到 Tomcat 安裝目錄下的 conf 目錄下的 server.xml 文件,如果沒有修改過 Tomcat 的端口,則直接搜索8080 ,找到對應的 Connector 標籤加上 URIEncoding 屬性,值爲 UTF-8。Tomcat8以及later基本不用改,默認爲utf-8.

4.是否因爲遠程服務器發送過來的字符流是傳輸內容的UTF-8編碼,而客戶端獲得字符流後,以JVM默認的編碼重新解析爲字符串,因服務器-客戶機編碼不一致,而導致了亂碼問題。

Java虛擬機中字符串編碼默認跟隨操作系統,中文版的Windows系統編碼爲GBK,Linux系統爲UTF8,如果需要手動設定編碼,可以在JVM啓動時添加以下參數:

-Dfile.encoding=UTF-8

新問題:添加以上參數後,java程序輸出到標準輸出(也就是常見的控制檯)時,日誌編碼也會是utf8,但MyEclipse的Console、Windows的cmd窗口,並不知道應該以UTF8編碼來解析jvm輸出的字符,所以會出來亂碼問題。爲了讓JVM輸出編碼與控制檯接收端保持一致,需要手動設置控制檯接收編碼。

eclipse中右擊當前文件,run as---->run configuration------>common----->Encoding

或者如下圖所示,點擊綠色旁邊向下的三角,run configuration

5.是否因爲eclipse 工作空間編碼格式

【Window】→【Preferences】→【General】→【Workspace】

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章