单个JSP文件波兰字符UTF-8编码失效问题求助
解决单个JSP文件UTF-8编码失效的问题
这种单个文件编码“搞特殊”的情况我碰到过好几次,结合你已经做的全局配置,给你几个针对性的排查和修复步骤:
检查单个文件的Eclipse编码设置
全局配置有时候会被单个文件的自定义设置覆盖。右键出问题的JSP文件 →Properties→Resource,查看Text file encoding:- 如果显示不是UTF-8,直接选择
Other→ 勾选UTF-8,不要选“继承自容器”,手动指定更可靠。 - 改完后记得点击
Apply and Close,然后刷新文件。
- 如果显示不是UTF-8,直接选择
补全JSP的page指令编码属性
从你给出的代码片段看,page指令可能缺少了pageEncoding属性。完整的UTF-8配置应该同时指定contentType和pageEncoding:<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="main.tables.*" %>contentType是告诉浏览器用UTF-8解析页面内容pageEncoding是告诉JSP编译器读取源文件时用UTF-8编码,这步是关键,漏掉的话编译器会用系统默认编码读取,直接导致特殊字符乱码。
验证文件的实际物理编码
有时候Eclipse的配置和文件实际存储的编码不一致。用Notepad++或VS Code打开这个JSP文件,看编辑器右下角的编码标识:- 如果显示是GBK或其他编码,直接转成UTF-8(Notepad++:编码 → 转为UTF-8),保存后回到Eclipse刷新项目。
清理项目缓存并重新编译
Eclipse偶尔会缓存旧的编译结果,导致新的编码配置不生效:- 点击顶部菜单栏
Project→Clean...,选择你的项目执行清理 - 如果是Maven项目,右键项目 →
Maven→Clean+Install,重新部署到服务器
- 点击顶部菜单栏
排查服务器端编码(可选)
如果上面的步骤都没用,再检查服务器的编码配置(以Tomcat为例):- 打开
conf/server.xml,确保Connector节点添加了URIEncoding="UTF-8":<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/> - 检查项目的
web.xml是否配置了编码过滤器,确保请求和响应都用UTF-8:<filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
- 打开
按这个顺序排查,大概率能解决单个JSP的波兰字符显示问题。
内容的提问来源于stack exchange,提问作者Maciej Socha
相关产品推荐
相关产品推荐

