0
点赞
收藏
分享

微信扫一扫

一文解决IDEA中文乱码问题


✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。
🍎个人主页:​​Java Fans的博客​​ 🍊个人信条:不迁怒,不贰过。小知识,大智慧。
💞当前专栏:JAVA开发者成长之路
✨特色专栏:国学周更-心性养成之路
🥭本文内容:一文解决IDEA中文乱码问题
更多内容点击👇
       JSP连接MySQL数据库

【本文目录】

  • ​​1、JSP网页页面乱码​​
  • ​​2、JSP include 引入文件乱码​​
  • ​​3、Java类中导致的网页中文乱码​​
  • ​​4、tomcat导致的控制台乱码​​
  • ​​5、IDEA导致的控制台乱码​​

一文解决IDEA中文乱码问题_js

1、JSP网页页面乱码

在.jsp文件的开头加入:

<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>

2、JSP include 引入文件乱码

【1】运行效果如下(乱码):

一文解决IDEA中文乱码问题_tomcat_02


【2】在要引入的文件part.htm中添加:

<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>

如下图:

一文解决IDEA中文乱码问题_tomcat_03


源码分享:

<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>

<h1>你好,我是html文件!</h1>

在index.jsp中引用了part.html文件如下:

一文解决IDEA中文乱码问题_js_04


源码分享:

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@include file="part.html"%>

<html>
<head>
<title>$Title$</title>
</head>
<body>
你好
<% int num=100; %>
<h1>【include.jsp页面】num=<%=num%></h1>
<hr><jsp:include page="info.jsp"/>
</body>
</html>

【3】正确运行效果如下:

一文解决IDEA中文乱码问题_intellij-idea_05

【4】JSP 要经过三个阶段,两次的“编码”:

第一阶段会用 pageEncoding ———> 第二阶段会用 utf-8 至 utf-8 ———> 第三阶段会用 contentType 也就是在客户端浏览器中看到的

第一阶段是 JSP 文件翻译成 Servlet,也就是 .java 文件,这是容器会根据 pageEncoding 的设置读取 jsp 文件, 结果是有指定的编码方法翻译成统一的 UTF-8 的Java源代码,如果 pageEncoding 没有设定或者设定不对,就会出现中文乱码。

第二阶段是 javac 将 java 源代码编译成 java 字节码,不论 JSP 编写时用的什么编码方案,经过这个阶段的结果都是 UTF-8 编码的 java 源代码。javac 使用 UTF-8 的编码读取 java 源代码,编译成 UTF-8 编码的二进制字节码,即 .class 文件,这是 JVM 对常数字符串在二进制内表达的规范。

第三阶段是 Tomcat 或者其他容器载入和执行 java 字节码,输出的结果也就是在客户端浏览器见到的,这个阶段隐藏在第一阶段和第二阶段的 contentType 设定就发挥作用了。

include 指令就是在第一阶段, 即 JSP 页面翻译成 Servlet 时

include 动作发生在第一阶段之前

如果包含文件和被包含文件的编码不一致,在进行编码转换时就可能出现中文乱码

3、Java类中导致的网页中文乱码

中文乱码源码:

package cn.lqgx.www;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/hello")
public class HttpServletDemo02 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("我是注解方式的控制台中的HttpServletDemo!");
resp.getWriter().println("你好!my is HttpServletDemo!注解方式");
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}

【1】乱码运行效果如下:

一文解决IDEA中文乱码问题_tomcat_06


【2】解决方案:在doGet中应用下面两种方案二选一解决中文乱码问题。

方案一:resp.setContentType(“text/html;charset=UTF-8”);

方案二:resp.setCharacterEncoding(“UTF-8”);

源码分享:

package cn.lqgx.www;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/hello")
public class HttpServletDemo02 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("我是注解方式的控制台中的HttpServletDemo!");
//方法一:
// resp.setContentType("text/html;charset=UTF-8");
//方法二:
resp.setCharacterEncoding("UTF-8");

resp.getWriter().println("你好!my is HttpServletDemo!注解方式");
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}

【3】正确运行效果如下:

一文解决IDEA中文乱码问题_intellij-idea_07

4、tomcat导致的控制台乱码

【1】打开Edit Configurations

一文解决IDEA中文乱码问题_js_08

【2】打开Server,在VM options框里加上: -Dfile.encoding=UTF-8

一文解决IDEA中文乱码问题_servlet_09

【3】打开Startup/Connection,添加name:JAVA_TOOL_OPTIONSvalue:-Dfile.encoding=UTF-8,设置完成后,点击OK完成配置。

一文解决IDEA中文乱码问题_java_10

5、IDEA导致的控制台乱码

【1】打开File-Settings

一文解决IDEA中文乱码问题_servlet_11


【2】如下图,打开Editor->File Encodings;然后设置3/4中三个位置都是UTF-8

一文解决IDEA中文乱码问题_js_12


【3】修改idea安装目录下idea.exe.vmoptions/idea64.exe.vmoptions两个文件,后面加上 -Dfile.encoding=UTF-8,然后重启idea。

一文解决IDEA中文乱码问题_js_13

Java系列知识点击​​关注博主​​,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:​​《国学周更—心性养成之路》​​,学习技术的同时,我们也注重了心性的养成。

一文解决IDEA中文乱码问题_intellij-idea_14


举报

相关推荐

0 条评论