问下导入以前的文件但是控制台乱码问题。

问下导入以前的文件但是控制台乱码问题。

老师问一下我把以前的文件什么的导入了进来,但是控制台输出会有乱码。

package filter;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import entity.User;
import service.UserService;

/**
 * Servlet Filter implementation class LoginFilter
 */
@WebFilter(urlPatterns = {"/books","/booklist","/category"})
public class LoginFilter implements Filter {
  
    private UserService userService = new UserService();
    /**
     * Default constructor. 
     */
    public LoginFilter() {
        // TODO Auto-generated constructor stub
    }

   /**
    * @see Filter#destroy()
    */
   public void destroy() {
      // TODO Auto-generated method stub
   }

   /**
    * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
    */
   public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
      // TODO Auto-generated method stub
      // place your code here

      // pass the request along the filter chain
       //System.out.println("ok");
       
       HttpServletRequest req= (HttpServletRequest)request;       
       System.out.println("Login Filter捕捉到URI :" + req.getRequestURI());
       User user2 = (User) req.getSession().getAttribute("user");
       System.out.println(user2);
       HttpServletResponse res = (HttpServletResponse)response;
       if(req.getSession().getAttribute("user") == null) {
         req.setAttribute("errmessage", "请登陆");         
         req.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request, response);;
       }else {
         User user = (User) req.getSession().getAttribute("user");
         if(userService.checkUser(user)) {
           chain.doFilter(request, response);
         }else {
             req.setAttribute("errmessage", "请登录");        
             req.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request, response);;
         }
         
       }
   
   }

   /**
    * @see Filter#init(FilterConfig)
    */
   public void init(FilterConfig fConfig) throws ServletException {
      // TODO Auto-generated method stub
     System.out.println("Login Filter初始化成功");
   }

}

这是文件

这是 控制台输出的效果

Login Filter???URI :/category

现在cosole 的encoding 是GBK

但是加入我把他的encoding 改为utf-8的话输出为:

5-Aug-2020 21:56:04.746 ��Ϣ [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory ��web Ӧ�ó�����Ŀ¼ [D:\apache-tomcat-8.5.57\webapps\manager]

类似于这样,在gbk的encoding下这些乱码都是中文。 

Encoding Filter ?????????encoding??:UTF-8

而且这个地方也还是乱码。 

问下这个要怎么解决呢? 

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
好帮手慕小脸 2020-08-07 15:42:03

同学你好,这里同学可将老师之前提到的所有位置处,全部设置成utf-8后,重启IDEA后再试试

祝学习愉快~

  • 提问者 慕前端8369922 #1
    对的老师,总共改了 bin文件夹下面idea64.exe.vmoptions、idea.exe.vmoptions文件 Tomcat的VM options项中添加:-Dfile.encoding=UTF-8 File>Setting>Editor>File Encodings 里面的三项全部改为utf-8 然后 Editor - general - console 里面 有个default encoding 那个如果设置为 system default: gbk 07-Aug-2020 17:15:34.162 警告 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom 使用[SHA1PRNG]创建会话ID生成的SecureRandom实例花费了[253]毫秒。 Encoding Filter 鍒濆鍖栨垚鍔燂紝鐜板湪鐨別ncoding鍊间负:UTF-8 如果设置为utf-8: 07-Aug-2020 17:16:09.525 ���� [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom ʹ��[SHA1PRNG]�����ỰID���ɵ�SecureRandomʵ��������[253]���롣 Encoding Filter 初始化成功,现在的encoding值为:UTF-8
    2020-08-08 05:16:30
  • 好帮手慕阿满 回复 提问者 慕前端8369922 #2
    同学你好,需要将所有的位置都修改为UTF-8,然后重启IDEA,再运行项目试试。祝:学习愉快~
    2020-08-08 11:10:07
好帮手慕小脸 2020-08-07 10:31:21

同学你好,按照如下步骤再试试:

在IDEA中,点击File>Setting>Editor>File Encodings,将Default encodeing for properties file也设置成UTF-8,如:

http://img1.sycdn.imooc.com//climg/5f2cbcf009eaeff707690646.jpg

然后重启IDEA再试试。

祝:学习愉快~

  • 提问者 慕前端8369922 #1
    老师你好,这里我已经改过了,就是底下的结果。
    2020-08-07 12:10:05
好帮手慕小尤 2020-08-06 11:17:38

同学你好,1. 设置所有文件都是UTF-8编码。具体:左上角:File-->settings-->Editor-->File Encodings 将所有编码都设置为UTF-8模式。如下所示:

http://img1.sycdn.imooc.com//climg/5f2b752f09b0837e04910243.jpg

2.  找到intellij idea安装目录,bin文件夹下面idea64.exe.vmoptions、idea.exe.vmoptions文件,追加:-Dfile.encoding=UTF-8 如下所示:

http://img1.sycdn.imooc.com//climg/5f2b758c09bbb00205040264.jpg

3. 在部署Tomcat的VM options项中添加:-Dfile.encoding=UTF-8

4. 重启Intellij idea

祝学习愉快!

  • 提问者 慕前端8369922 #1
    老师你好,我按照你写的在所有地方都改成了utf-8 , 并且追加了那个句子 然后filter输出正常了: Login Filter初始化成功 但: 06-Aug-2020 13:15:55.259 ��Ϣ [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory ��web Ӧ�ó�����Ŀ¼ [D:\apache-tomcat-8.5.57\webapps\manager] 这里就变成乱码了。 我已经在tomcat的vm options 里面加入了 -Dfile.encoding=UTF-8 然后如果我在cosole-encoding 里面改为gbk, 上面输出正常了,filter 里面变成了: Login Filter鍒濆鍖栨垚鍔� 是哪里出错了呢?
    2020-08-07 01:19:36
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师