SQL 中字段值不能是中文的问题
public int kouanID(String kouan)
{
int kouanid=0;
try
{
PreparedStatement ps = DB.getPs( "select kouanid from kouanbiao where kouanmingcheng= ' "+kouan+ " ' ");
ResultSet rs = ps.executeQuery();
rs.next();
kouanid = rs.getInt(1);
}catch(Exception e)
{
e.printStackTrace();
}
return kouanid;
}
kouan 值是中文的,而SQL中的kouanmingcheng也是中文的
PreparedStatement ps = DB.getPs( "select kouanid from kouanbiao where kouanmingcheng= ' "+kouan+ " ' ");却查不出来
所以一直返回一个0
结果我把SQL里 kouanmingcheng 改成英文 再把 kouan改成英文 却是返回正常
这是为什么?SQL里难道就不能存中文?
请问各位高手我该怎么解决?
------解决方案--------------------id = kouanID( new String(kouan.getBytes( "ISO-8859-1 "), "GBK ") );
------解决方案--------------------写个过滤器或者和LS一样处理一下
------解决方案--------------------你刚才的那个帖子也看过了
可以加个过滤器,在web.xml中配置一下:
在web.xml中添加如下代码:
<filter>
<filter-name> Set Character Encoding </filter-name>
<filter-class> org.common.filter.EncodingFilter </filter-class>
</filter>
<filter-mapping>
<filter-name> Set Character Encoding </filter-name>
<url-pattern> /* </url-pattern>
</filter-mapping>
过滤器类的代码如下:
package org.common.filter;
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;
public class EncodingFilter implements Filter
{
public void init(FilterConfig fi