数据库mysql5.0:
character_set_client gbk;
character_set_connection gbk;
character_set_database gbk;
character_set_filesystem binary;
character_set_results gbk;
character_set_server gbk;
character_set_system utf8;
my.ini文件:
[client]port=3306[mysql]default-character-set=GBK
# SERVER SECTION
# ----------------------------------------------------------------------
#
# The following options will be read by the MySQL Server. Make sure that
# you have installed the server correctly (see above) so it reads this
# file.
#
[mysqld]# The TCP/IP Port the MySQL Server will listen on
port=3306
character_set_server =GBK#Path to installation directory. All paths are usually resolved relative to this.
basedir="C:/Program Files/MySQL/MySQL Server 5.0/"#Path to the database root
datadir="C:/Program Files/MySQL/MySQL Server 5.0/Data/"# The default character set that will be used when a new schema or table is
# created and no character set is defined
default_character_set=GBK
页面全部是:
<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%>
struts.xml:
<constant name="struts.il8n.encoding" value="GBK"></constant>
struts.properties:struts.locale=en_GB;
web.xml:
<filter-name>
Set Web Application Character Encoding
</filter-name>
<filter-class>com.shop.util.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>defaultencoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>
Set Web Application Character Encoding
</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
编码过滤器:
public class SetCharacterEncodingFilter implements Filter { protected FilterConfig filterConfig = null;
protected String defaultEncoding = null;
/**//* (non-Javadoc)
* @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
*/
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
this.filterConfig = arg0;
this.defaultEncoding = filterConfig.getInitParameter("defaultencoding");
}
/**//* (non-Javadoc)
* @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
*/
public void doFilter(
ServletRequest request,
ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
// TODO Auto-generated method stub
request.setCharacterEncoding(selectEncoding(request));
chain.doFilter(request, response);
}
public void destroy() {
this.defaultEncoding = null;
this.filterConfig = null;
}
protected String selectEncoding(ServletRequest request) {
return this.defaultEncoding;
}
}
数据库可以直接插入中文,但是运行代码的时候数据库里面显示???(问号),郁闷了 不知道哪里出了问题,救命啊!
character_set_client gbk;
character_set_connection gbk;
character_set_database gbk;
character_set_filesystem binary;
character_set_results gbk;
character_set_server gbk;
character_set_system utf8;
my.ini文件:
[client]port=3306[mysql]default-character-set=GBK
# SERVER SECTION
# ----------------------------------------------------------------------
#
# The following options will be read by the MySQL Server. Make sure that
# you have installed the server correctly (see above) so it reads this
# file.
#
[mysqld]# The TCP/IP Port the MySQL Server will listen on
port=3306
character_set_server =GBK#Path to installation directory. All paths are usually resolved relative to this.
basedir="C:/Program Files/MySQL/MySQL Server 5.0/"#Path to the database root
datadir="C:/Program Files/MySQL/MySQL Server 5.0/Data/"# The default character set that will be used when a new schema or table is
# created and no character set is defined
default_character_set=GBK
页面全部是:
<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%>
struts.xml:
<constant name="struts.il8n.encoding" value="GBK"></constant>
struts.properties:struts.locale=en_GB;
web.xml:
<filter-name>
Set Web Application Character Encoding
</filter-name>
<filter-class>com.shop.util.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>defaultencoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>
Set Web Application Character Encoding
</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
编码过滤器:
public class SetCharacterEncodingFilter implements Filter { protected FilterConfig filterConfig = null;
protected String defaultEncoding = null;
/**//* (non-Javadoc)
* @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
*/
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
this.filterConfig = arg0;
this.defaultEncoding = filterConfig.getInitParameter("defaultencoding");
}
/**//* (non-Javadoc)
* @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
*/
public void doFilter(
ServletRequest request,
ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
// TODO Auto-generated method stub
request.setCharacterEncoding(selectEncoding(request));
chain.doFilter(request, response);
}
public void destroy() {
this.defaultEncoding = null;
this.filterConfig = null;
}
protected String selectEncoding(ServletRequest request) {
return this.defaultEncoding;
}
}
数据库可以直接插入中文,但是运行代码的时候数据库里面显示???(问号),郁闷了 不知道哪里出了问题,救命啊!
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf_8");
1 页面设置成 gb2312
2.过滤器社这request.setCharcterEncoding("gbk2312");
3.链接数据库的写法注意: jdbc://mysql......编码方式,到网络上去找找 也用gb2312基本就OK拉
1、在jsp输入页面中加入:
<%@pagecontentType="text/html;charset=数据库字符集"% >
2、在html标签的<head>的第一行加入
<meta http-equiv="Content-Type" content="text/html; charset=数据库字符集" />解决方法二:使用javax.servlet.Filter
1、编写web.xml配置。在
这样就可以保证页面发送的数据的编码与数据库编码一致,这样从数据库中读取的数据就是你想要的正确字符了,你可放心的读取了
<filter>
<filter-name>encoding</filter-name>
<filter-class>com.morecans.test.EncodingFilter</filter-class>
<init-param>
<param-name>charset</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>----------编写Filterservlet:com.morecans.test.EncodingFilter
public void doFilter(ServletRequest servletrequest,
ServletResponse servletresponse, FilterChain filterchain)
throws IOException, ServletException ...{
request.setCharacterEncoding(数据库字符集);
response.setCharacterEncoding(数据库字符集);
filterchain.doFilter(servletrequest, servletresponse);
}-----------------
连接mysql的url设置为:
jdbc:mysql://localhost:3306/dbName?useUnicode=true&characterEncoding=utf8以上只供参考,希望能帮到你。
{
public static String convert(String str)
{
try{
byte s1[]=str.getBytes("ISO8859-1");
return new String(s1,"gbk");
}
catch(Exception e)
{
return str;
}
}
}
忘了发代码了
其他全部设置成utf8编码的,在mysql里面输入:show variables like '%char%'会发现有3个设置成了gbk,就没有乱码了,我也不知道其中的原因,所以当心如果是碰到一些很偏的汉字还会有可能乱码