问题现象描述
在JSP开发过程中,中文字符显示为问号是常见的编码问题。该问题通常发生在以下场景:页面输出中文时、表单提交中文参数时、数据库存取中文数据时。主要原因为各环节字符编码设置不一致或未正确声明编码格式。

JSP页面编码设置
正确设置JSP文件编码是基础解决方案:
- 在文件头部声明编码格式:
- 确保开发工具默认编码设置(如Eclipse中设置为UTF-8)
- HTML页面添加meta标签声明:
服务器与数据库配置
系统级配置建议:
- Tomcat配置:在server.xml的Connector节点添加
URIEncoding="UTF-8"
- MySQL连接字符串添加参数:
jdbc:mysql://host/db?useUnicode=true&characterEncoding=UTF-8
请求响应编码处理
在Servlet中需进行编码处理:
// 设置请求编码
request.setCharacterEncoding("UTF-8");
// 设置响应编码
response.setContentType("text/html;charset=UTF-8");
建议使用Spring字符编码过滤器统一处理:
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8