gpt4 book ai didi

mysql - Tomcat6 UTF-8字符显示问题

转载 作者:行者123 更新时间:2023-11-29 00:53:35 25 4
gpt4 key购买 nike

我遇到了一个奇怪的问题,即使用在 Tomcat 6 上运行的 Struts 2 和 MySQL 数据库在 JSP/Servlet webapp 中显示扩展字符。我已经将这个应用程序部署到两个不同的服务器上,它们都连接到同一个数据库并且看起来具有相同的设置(相同版本的 Ubuntu,相同版本的 tomcat,相同版本的 MySQL 等)并且在一台服务器(我的开发服务器)上扩展字符显示正常,但在另一个(我的生产服务器 - 典型!)上它们不显示。所以我假设必须有一些服务器配置设置,我没有在生产服务器上正确完成它们。

我检查过的一些东西:

  • 我的所有 .jsp 页面中都有以下几行:

    <%@ page language="java" pageEncoding="utf-8" contentType="text/html;charset=utf-8" %>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta equiv="Content-Type" content="text/html; charset=UTF-8" />
  • 生产服务器和开发服务器上的 Tomcat server.xml 文件相同,都包含 URIEncoding="UTF-8"

  • 生产服务器和开发服务器上的web.xml文件是一样的。

  • 数据库中的字符集设置正确,其中包含正确的字符。我还可以看到它们在开发服务器上正确显示,这让我认为这不是数据库问题。

如有任何建议,我们将不胜感激。

最佳答案

您几乎涵盖了所有内容。唯一没有包含在列表中的是 MySQL JDBC 连接 URL。 MySQL JDBC 驱动程序将使用平台默认字符集在 characterEncoding 时发送数据。 JDBC URL 中未指定属性。显然您的生产服务器平台没有使用 UTF-8 作为默认字符集。您需要修复 MySQL JDBC 连接 URL,如下所示:

jdbc:mysql://localhost:3306/db_name?useUnicode=yes&characterEncoding=UTF-8

您没有涉及的另一件事是请求编码。这不一定与您的问题直接相关,因为您会在其他环境中看到同样的问题。但是你也应该有一个 Filter这基本上是request.setCharacterEncoding("UTF-8")每当它被检索为 null .

另见:

关于mysql - Tomcat6 UTF-8字符显示问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7202800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com