在界面添加信息显示问号,下面的是在数据库中直接添加的,怎么解决
看看你数据库里面插入的数据是不是乱码 如果是乱码 说明是字符集不一致 如果不是乱码 说明是你项目字符集不一致
我使用mysql数据库是这样做的,在连接数据库的url后加一参数,就是设置字符编码
**?useUnicode=true&characterEncoding=UTF-8"; **
private static final String url = "jdbc:mysql://localhost:3306/studentinfo?useUnicode=true&characterEncoding=UTF-8";
如果不是:
(1)进入注册表,依次单击HKEY_LOCAL_MACHINE --->SOFTWARE ---> ORACLE--->home,找到NLS_LANG,查看数值数据是否为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
(2) 如果以上设置都没有问题,那就要查看下环境变量的设置,查看是否有变量NLS_LANG,没有则新建该变量
(3)新建变量,设置变量名:NLS_LANG,变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK,确定即可
(4)重新登录PLSQL进行查询
你添加数据提交到后台用的是get方式提交,还是post方式提交?
get方式 一般解决方法是:
假设你用get提交
数据是这样子处理
String testData=new String(request.getParameter("testData").getBytes("iso-8859-1"),"utf-8");
如果用post提交
你获取数据 的前面加上一句
request.setCharacterEncoding("utf-8");
String testData =request.getParameter("testData");
如果你是用Struts中的actionform传值,最好还是写个过滤器
你需要用编码方式,尤其对中文等,需要用utf8或Unicode编解码来处理
package base.filter;
import java.io.IOException;
import java.util.Date;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.ConvertUtils;
import util.UtilDateConv;
import base.request.RequestCode;
public class FilterCode implements Filter {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) arg0;
HttpServletResponse response = (HttpServletResponse) arg1;
response.setContentType("text/html;charset=utf-8");
if (request.getMethod().equalsIgnoreCase("post")) {
request.setCharacterEncoding("utf-8");
} else {
request = new RequestCode(request);
}
arg2.doFilter(request, response);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
package base.request;
import java.io.UnsupportedEncodingException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
public class RequestCode extends HttpServletRequestWrapper {
public RequestCode(HttpServletRequest request) {
super(request);
// TODO Auto-generated constructor stub
}
@Override
public String getParameter(String name) {
String value = super.getParameter(name);
if (value == null) {
return null;
} else {
try {
value = new String(value.getBytes("iso-8859-1"), "utf-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return value;
}
}
}
web.xml配置
filteCode
base.filter.FilterCode
filteCode
/*
web.xml配置,为过滤器配置
filteCode
base.filter.FilterCode
filteCode
/*
字符集和校对规则有4个级别的默认设置:服务器级、数据库级、表级和连接级。
先查下你的各级别字符集跟校对规则,设置成你需要的字符集,生效之后,再做相应的操作。
参考自:MySQL的字符集和校对 http://www.data.5helpyou.com/article332.html