• 关于Java开发Idea中编码,解码以及解决中文乱码的实践经验


    前言

            关于这一块,特别是中文乱码,网上教程多得不能再多了,大家各抒己见,各种有着自己的实践经验和体会,但是吧,idea这东西,本身也做为IDE,集成开发环境,里面的很多配置对用户来说唯有API设置是可见的,于是就有一系列的设置来解决IDE上的问题。

    关于编码和解码

    编码,在设置以xxx格式编码时,比如在一个文本下,输入一个hello,并设置编码形式是"UTF-8",那么这个文本就是“UTF-8”编码格式下的"hello"。

    解码:在上面的基础上,“utf-8”编码下的文件当然要对应用"utf-8"来进行解码。

    总之:编码和解码的格式要保持一致。“UTF-8”的文件用“GBK”打开当然是会出现中文乱码的。

    关于中文乱码

    这点当我在使用tomact服务器打印日志时出现了这个问题。

    idea中关于编辑器的编码设置

      File/Directory Encoding 优先于 Project Encoding,Project Encoding 优先于 Global Encoding 。

    试想这样一个常见的场景,servlet对一个请求返回中文字符串。

     解决Servlet的response的中文乱码

     response设置使用编码为“utf-8”,这样在Idea的编辑器里返回中文字符,哪所写的中文字符到底是编辑器的编码方式还是response里设置的编码方式?

    答案是:为response里设置的编码方式经过我测试,java文件是UTF-8编码,response里设置成GBK,则response里的中文为response里设置的编码)

    测试如下:Response设置成GBK

    1. package com.cast.web;
    2. import javax.servlet.ServletException;
    3. import javax.servlet.annotation.WebServlet;
    4. import javax.servlet.http.HttpServlet;
    5. import javax.servlet.http.HttpServletRequest;
    6. import javax.servlet.http.HttpServletResponse;
    7. import java.io.IOException;
    8. import java.io.PrintWriter;
    9. @WebServlet(value = "/test")
    10. public class test extends HttpServlet {
    11. @Override
    12. protected void doGet(HttpServletRequest request, HttpServletResponse response)
    13. throws ServletException ,IOException
    14. {
    15. //第一种方式
    16. response.setContentType("text/html;charset=GBK");
    17. //第二种方式
    18. // response.setCharacterEncoding("utf-8");
    19. // response.setHeader("Content-Type","text/html;charset=UTF-8");
    20. PrintWriter printWriter =response.getWriter();
    21. printWriter.write("你好,世界!");
    22. printWriter.flush();
    23. printWriter.close();
    24. }
    25. }

     编辑器里对该文件设置编码为UTF-8

    查看网页的解码 

     

     

     

     结果是正确的。

     

    若设置java文件编码为utf-8,控制台打印代码里的中文的提示语句。 控制台解码默认是系统的编码为"GBK"。用“GBK”的方式进行解码,则肯定为中文乱码。

    解决控制台中文乱码

    使得控制台显示中文字符时的解码格式与中文字符的编码格式一致。

    第一种:把编辑器设置成与控制台相对应的编码。控制台默认是GBK,则编辑器也为GBK。

     

    第二种:把控制台编码设置为编辑器设置的编码。编辑器为UTF-8,则控制台也为UTF-8.

    如下 

    引用

    idea设置-----编码格式设置_翱翔的小菜鸟的博客-CSDN博客_idea编码格式设置

     IDEA控制台乱码问题,原因&解决方式,解决不了算我输_逆光影者的博客-CSDN博客_idea控制台乱码

  • 相关阅读:
    神经网络物联网未来发展趋势怎么样
    数据结构刷题训练——二叉树篇(一)
    【Mybatis】INSERT INTO 遇到NULL怎么处理?
    自动化密码分析
    酒水销售系统
    回文子串、回文子序列
    动态规划-扫地机器人最少初始电量
    04、EL和JSTL核心技术
    day01 Linux
    Metasploit介绍
  • 原文地址:https://blog.csdn.net/PHILICS7/article/details/127461437