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】

原文地址:https://www.cnblogs.com/MeiT/p/10541404.html