JSP 页面中的 UTF-8 编码

2022-09-01 00:41:47

我有一个页面,其页面编码为 。这个JSP页面有一个问答博客。我想在问答发布期间包含特殊字符。JSPISO-8859-1

问题是JSP不支持编码,即使我已经将其从更改为。这些角色(,,,)正在制造问题。当我单独或与任何字符的组合一起发布这些字符时,它在数据库中是storinh,当我在发布应用程序时删除这些字符时,它工作正常。UTF-8ISO-8859-1UTF-8~%&+null

任何人都可以提出一些解决方案吗?


答案 1

应在应用程序的所有层使用相同的编码,以避免此问题。添加过滤器来设置编码非常有用:

public void doFilter(ServletRequest request,
                     ServletResponse response,
                     FilterChain chain) throws ServletException {
   request.setCharacterEncoding("UTF-8");
   chain.doFilter(request, response);
}

要只在 JSP 页面上设置编码,请向它们添加以下行:

<%@ page contentType="text/html; charset=UTF-8" %>

将数据库配置为也使用相同的字符编码。

如果需要转换字符串的编码,请参阅:

我不建议将HTML编码的文本存储在数据库中。例如,如果您需要生成PDF(或HTML以外的任何内容),则需要先转换HTML编码。


答案 2

完整的JSP标签应该是这样的,注意页面编码:

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

一些旧的浏览器也搞砸了编码。您可以使用 HTML 标记

 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

此外,如果您使用的是 Eclipse 左键单击文件->属性->签出 ->文本文件编码,则应以 UTF-8 格式记录该文件。