Java 数据库中的字符编码

Java 数据库中的字符编码,java,jpa,encoding,Java,Jpa,Encoding,我需要在我的web项目(JavaEE)中使用波兰语字符。当我在数据库中插入行时,一切正常,但当我尝试在页面中插入行时。在数据库中我看到了吗?而不是波兰字符。我在页面中设置了UTF-8编码: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 和glassfish-web.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYP

我需要在我的web项目(JavaEE)中使用波兰语字符。当我在数据库中插入行时,一切正常,但当我尝试在页面中插入行时。在数据库中我看到了吗?而不是波兰字符。我在页面中设置了UTF-8编码:

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

和glassfish-web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app error-url="">
  <class-loader delegate="true"/>
  <parameter-encoding default-charset="UTF-8" />
  <jsp-config>
    <property name="keepgenerated" value="true">
      <description>Keep a copy of the generated servlet class' java code.</description>
    </property>
  </jsp-config>
</glassfish-web-app>

保留生成的servlet类的java代码的副本。

我还需要在哪里进行设置?

确保将
utf-8
引擎设置到数据库中。尝试作为数据库连接的字符编码连接

jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8
更确切地说,您应该编写
ServetFilter
来设置字符编码类型。我想,

CharSetFilter.java

public class CharSetFilter implements Filter {
    public void init(FilterConfig fConfig) throws ServletException {
    }

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

    public void destroy() {
    }
}
web.xml配置文件

<filter>
    <filter-name>CharSet Filter</filter-name>
    <filter-class>your.package.CharSetFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>CharSet Filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

字符集滤波器
您的.package.CharSetFilter
字符集滤波器
/*

您使用的是什么数据库?MySQL?MSSQL?博士后?Oracle?您必须确保与数据库的连接(来自Java)也使用UTF-8编码。另外,如果要将字符集放在
meta
标记中(而不是应该放在HTTP头中),它必须在内容开头的前512字节内,并且在包含文本的任何标记之前(甚至在
title
标记之前)。否则,并非所有浏览器都会尊重它。MySQL是我的数据库。