日期:2014-05-18  浏览次数:20811 次

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