课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
Java编程开发是目前大多数软件开发程序员都需要掌握的一个编程语言,而本文我们就通过案例分析来简单了解一下,Java编码都有哪些常见问题。
Tomcat日志
先解决Tomcat日志乱码的问题,先要明白:Tomcat作为一个独立的进程,IDEA是怎么获取到Tomcat日志的呢?在IDEA控制台中的Tomcat启动日志中
复制选项中的路径,在文件夹中打开,进入logs文件夹,就可以发现这个是tomcat的日志文件输出路径,而IDEA正是读取了这个文件中的内容输出到控制台中,我们可以使用记事本打开日志文件,然后选择另存为,可以发现文件的默认编码是ANSI,也就说在简体中文下是GBK编码。
而读取文本文件内容一般有两种方式,一种是字符流,二种是字节流,字节流可以指定字符编码也可以通过的JVM启动参数-Dfile.encoding指定默认编码。
明白了上面的问题,我们就能知道为什么乱码了,这是因为IDEA的默认编码和这个日志文件的编码格式不统一导致的。
解决方案很简单,统一两个系统的编码,对于Tomcat的输出的日志文件,我们可以设置Tomcat启动的VM选项:EditConfigurations->Server->VMoptions编辑添加:-Dfile.encoding=UTF-8
设置完Tomcat编码后,删除刚刚路径中的日志文件,重启Tomcat服务,再使用记事本打开刚刚的日志文件,另存为我们可以发现,编码已经变成了UTF-8。
IDEA
接下来设置IDEA的编码,IDEA默认编码暂时没有找到查找方式,我们也可以将其指定为UTF-8,找到IDEA的安装路径,在bin目录中可以发现一个名为idea.exe.vmoptions和idea64.exe.vmoptions选项,分别打开,添加-Dfile.encoding=UTF-8后,重启IDEA.
完成上面两步后,再次启动Tomcat服务,你会发现日志已经正常。
注:如果依然发现乱码,则可能是IDEA缓存了当前项目的编码设置,你可以在当前项目的.idea文件夹中找到encoding.xml文件,删除所有不是UTF-8的编码设置,重启IDEA即可。
网页乱码
我们都知道,浏览器浏览的网页其实是从服务器发送的HTML文件到浏览器中显示,而发送的是通过字节流传输,这个过程就涉及到解码->编码的过程,在HTTP协议中,编码的协议通过Header中的charset中设置。
为什么放header,因为HTTP请求会先解析header,而且header一般不会有ascii无法解析的字符,一般都是英文
网页乱码其实很好解决,如果发现在Servlet中,返回中文给浏览器的时候浏览器返回的是???
点击F12,抓包网络后,找到ResponseBody中的charset选项,可以发现charset=ISO-8859-1
也就说默认的Tomcat使用的编码是ISO-8859-1,这是西欧的语言编码,它是不兼容中文的。如果你在Servlet返回的结果中添加一点法语:Ää或者德语什么的,你会发现会正常显示。
charset的意思便是Tomcat是以什么样的方式编码字节,而浏览器便会以这样的编码方式解码字节。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei456学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。