引入
在编写jsp文件时,会用到include指令来向当前页面引入其他文件。经过实测发现当引入的文件是jsp文件时使用下面的语句设置编码格式即可。
<%@ page language="java" contentType="text/html; charset=utf-8"%>
但是当引入的文件是html、txt文件 时,如果文件中含有中文就会显示中文乱码,我在遇到该问题时试了网上的很多方法,但是这些方法都没有解决问题。后来我摸索后总结出了下面两个方法,第一个方法简单快捷 ,第二个方法莫名其妙 。着急解决的可以直接看第一个方法,有兴趣的可以看看第二个方法。
方法一:
找到项目路径下的WEB-INF目录 ,该目录下有一个web.xml文件 ,进入该文件然后把下面的代码粘贴进去。
<jsp-config>
<jsp-property-group>
<url-pattern>*.html</url-pattern>
<page-encoding>UTF-8</page-encoding>
</jsp-property-group>
<jsp-property-group>
<url-pattern>*.txt</url-pattern>
<page-encoding>UTF-8</page-encoding>
</jsp-property-group>
</jsp-config>
像下面这样就行:
该代码就是把所有以.html和.txt结尾的文件的默认页面编码都设置为UTF-8。
方法二:
使用Notepad++等文本编辑器设置文件的编码格式不为utf-8,对就是不设为utf-8编码!我试了转为ANSI、UTF-8-BOM、UCS-2 Big Endian、UCS-2 Little Endian等我也不知道是啥的编码,运行后都没有中文乱码,但是转为utf-8编码运行时就会有中文乱码,这就是方法二莫名其妙的原因,我也不知道其中的原理是啥。
结语
总之按照这两种方法我都试过了,都可以解决引入html、txt文件时中文乱码的问题。对于原理我的理解是可能jsp在使用include指令引入文件时对于html、txt文件的默认编码格式不是utf-8所以就不能识别中文,如果是引入jsp文件的话可以用page指令设置其编码格式,但是html、txt不能使用page指令,只能用方法一来设置。至于方法二,原理我也没有搞懂,如果有懂得大佬欢迎在评论区分享。