SQL数据库和网页之间汉字转化问题

来源:百度知道 编辑:UC知道 时间:2024/07/08 15:26:34
写了一个工具类能够实现将数据库中是中文转换成GB2312格式然后显示到网页中,但是现在我进行查询的时候,如果输入的是中文,没有办法传递到数据库中与数据库的中文进行匹配,请问要怎么解决?
系统采用SSH开发。。。。。
import java.io.UnsupportedEncodingException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.RequestProcessor;
import org.springframework.web.struts.DelegatingRequestProcessor;

public class SelfRequestProcessor extends DelegatingRequestProcessor {
public SelfRequestProcessor() {
}

protected boolean processPreprocess(HttpServletRequest request,
HttpServletResponse response) {

super.processPreprocess(request, response);

try {
request.setCharacterEncoding("gb2312");
} catch (UnsupportedEncodingException ex) {
ex.printStackTrace();
}
return true;
}

}

你所说的不能匹配原因有二:
第一: 你应该确定你写的sql配置关键字是没问题的,如like '%中国%',最好你先debug一下
第二: 就是sql是正确的,但由于乱码问题,导致不能匹配,这种情况就要处理乱码问题,如下:

1.设置你页面上的编码,一般可以通过contentType设置,假设你设置的是UTF-8的编码
2.设置server.xml connector标签,加上一个属性,URIEncoding="UTF-8"(如果你页面的编码是GBK,那就设置为GBK)
你就不用再设置request的编码了,因为URIEncoding已经做了编码转换

或者用过滤器,实现编码转化,例子如楼上所述,但注意根据你的实际编码改变<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
其中的param-value值
希望以上能帮助你解决问题

不用这个转换了,在web.xml里加过滤器。
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>