我有一个带有 jsp 表单的网络应用程序。如果用户将项目符号文本从 word 复制到表单中,项目符号将变成奇怪的字符 â¿ 并由表单提交。有没有办法在 jsp.xml 中的表单级别防止这种情况发生?我正在使用 UTF-8 编码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
我有一个带有 jsp 表单的网络应用程序。如果用户将项目符号文本从 word 复制到表单中,项目符号将变成奇怪的字符 â¿ 并由表单提交。有没有办法在 jsp.xml 中的表单级别防止这种情况发生?我正在使用 UTF-8 编码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
不仅仅是子弹——每个非 ASCII 字符都可能被破坏。
您的页面以 UTF-8 编码输出,但您没有将输入处理为 UTF-8。不幸的是,Servlet 规范,在它的许多严重错误中,要求使用 ISO-8859-1 处理输入。完全改变这种行为是一种痛苦,并且在不同的 servlet 容器中有所不同。一些以 Tomcat 为中心的背景。
在从请求正文中提取第一个请求参数之前,您需要将请求正文字符编码设置为相同,否则它将是依赖于 servletcontainer 的默认值,通常是 ISO 8859-1。
request.setCharacterEncoding("UTF-8");
执行这项工作的一个明智的地方是servlet 过滤器。