java网站的一个怪问题

xnbb9622 2010-09-15 06:32:26
今天测试一个插入功能的时候,出现一个怪问题,当输入汉字“和珅”的时候,插入数据库居然是“和?”。数据库是sql server2005的,程序编码都是gb2312的,不知道这是什么情况
...全文
160 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xnbb9622 2010-09-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 orangeyuan 的回复:]
页面向数据库提交数据的时候是无法识别汉字的,需要自己写个过滤器将请求数据进行转码 出现乱码的地方是request向action 提交数据时识别不了汉字就出现乱码了 ,可以再接受request请求时先转换编码

package filters;

import java.io.IOException;
import javax.servlet.Filter;
import javax.s……
[/Quote]
过滤器我写了,不是数据转码的问题,只是个别汉字没办法显示,其他汉字都正常,而且长度没有问题,还是谢谢你
feixiangclf 2010-09-16
  • 打赏
  • 举报
回复
字段类型最好不要用char,用varchar
ropiz 2010-09-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 magong 的回复:]

字段长度?
nchar(2)够的
char(3)不够,只能放一个半汉字
[/Quote]

这个正解,看你的字段类型设置!
既然和字都出来了,就不可能是编码问题。
magong 2010-09-15
  • 打赏
  • 举报
回复
字段长度?
nchar(2)够的
char(3)不够,只能放一个半汉字
orangeyuan 2010-09-15
  • 打赏
  • 举报
回复
页面向数据库提交数据的时候是无法识别汉字的,需要自己写个过滤器将请求数据进行转码 出现乱码的地方是request向action 提交数据时识别不了汉字就出现乱码了 ,可以再接受request请求时先转换编码

package filters;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

/**********************************************************
* @author gyf
* @docRoot 过滤字符集
* @version 1.0
**********************************************************/
public class SetCharacterEncodingFilter implements Filter {

public SetCharacterEncodingFilter() {
}

protected String encoding = null;

protected FilterConfig filterConfig = null;

protected boolean ignore = true;
a
public void destroy() {
this.encoding = null;
this.filterConfig = null;
}

/**
* 根据输入参数设置字符集
* @param request ServletRequest
* @param response ServletResponse
* @param chain FilterChain
* @throws IOException,ServletException
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (ignore || request.getCharacterEncoding() == null) {
encoding = selectEncoding(request);
if (encoding != null) {
request.setCharacterEncoding(encoding);
}
}
chain.doFilter(request, response);
}

public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
String value = filterConfig.getInitParameter("ignore");
if (value == null) {
ignore = true;
} else if (value.equalsIgnoreCase("true")) {
ignore = true;
} else if (value.equalsIgnoreCase("yes")) {
ignore = true;
} else {
ignore = false;
}
}

protected String selectEncoding(ServletRequest request) {
return this.encoding;
}
}
这个是处理汉字的过滤器,在web.xml中配置下就行啦

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧