yankj12 / blog

技术研究、管理实践、其他的一些文章
MIT License
1 stars 2 forks source link

javaweb项目中tomcat使用及配置 #52

Open yankj12 opened 5 years ago

yankj12 commented 5 years ago

tomcat中文乱码

基础背景

web项目在浏览器中发现js文件中文乱码,检查源代码,js文件使用的是utf-8格式。 项目使用的是springMVC,设置了filter使用spring框架的字符集filter来处理字符集,并且为了避免spring框架拦截处理js等静态资源,web.xml中对于js等静态资源使用tomcat默认的servlet来处理。 分析到此,应该是js文件使用tomcat处理,但是tomcat字符集处理的不正确。解决了tomcat字符集问题应该就可以解决这个问题。

Tomcat的server.xml设置 URIEncoding

  1. 从Tomcat bin/目录下运行 startup.bat 启动的Tomcat     这种情况下Tomcat导致的中文乱码,可以通过配置 D:\apache-tomcat-7.0.79\conf 目录下的 server.xml 文件,在    元素中添加 URIEncoding="utf-8" 属性解决。

  2. 如果Tomcat配置在Eclipse中,在Eclipse启动Tomcat,上面的设置无法解决乱码问题,原因是:Eclipse会用 Server项目中的server.xml 替换Tomcat安装目录下conf中的server.xml文件,因此必须修改Server项目中的server.xml,在    元素中添加 URIEncoding="utf-8" 属性

eclipse tomcat的launch configuration中配置

  1. Common选项卡中设置Encoding为utf-8 ,
  2. Arguments选项卡中,添加-Dfile.encoding=UTF-8 参数到VM启动参数中。

参考链接 解决eclipse中tomcat乱码问题

引用js中文乱码

在jsp中引用js文件时,js文件中的汉字在程序中都显示为乱码,查看发现了几个解决方法:

  1. page指令中设置contentType、pageEncoding属性

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

    使用后没有解决问题,contentType属性用于设置相应正文的MIME类型和JSP页面中文本内容的字符集编码;pageEncoding属性用于指定JSP页面中文本内容的字符集编码格式,如果指定了pageEncoding属性,则contentType舒总中的charset就不再具有指定JSP页面中文本内容的字符集编码的作用了。

  2. 在引用js时设置编码方式:

    <script src="../../resources/js/base.js" type="text/javascript"  charset="UTF-8">
    </script>

    返现我的程序依然不起作用;

  3. js或者jsp文件声明的是utf-8,但是文件格式不是utf-8

参考资料 [在jsp中引用js文件汉字显示为乱码解决方法]()