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