我用struts,JSP页面编码为UTF-8,后台Oracle数据库,使用UTF-8编码,NVARCHAR2类型字段,查询使用JDBC。页面上输入中文,可能是GB或BIG5的汉子,在Action中根据该字段进行查询时,怎么都查不出来,但是如果从数据库查出所有数据来,再一个一个比较,执行正常。到底是怎么回事呢?

解决方案 »

  1.   

    你的查询条件是通过form提交的,还是url后面跟的
    把查询的语句打印出来看看,是不是里面的中文已经是乱码了呀
      

  2.   

    在Action中根据该字段得值是页面得输入得值吗?是页面上输入的汉字吗?
      

  3.   

    在form中提交的没问题,跟在URL后面,用window.open()方法打开的,就不行
      

  4.   

    url后面的中文要URLEncoder.encode(中文,"utf-8")
    action中java.net.URLDecoder.decode(中文,"utf-8")就行了
      

  5.   

    应该是你的POST或者GET方式传数据的时候没有设置编码,导致TOMCAT使用默认编码ISO-8859-1
      

  6.   

    这个调用要怎么做?
    现在我不用window.open方法了,有Ajax的部分是发URL的
    我直接写好像不行啊,不执行的-------------------------------------------------------
    url后面的中文要URLEncoder.encode(中文,"utf-8")
    action中java.net.URLDecoder.decode(中文,"utf-8")就行了
      

  7.   

    最根本的办法就是在Servlet前面加上一个Filter,设置编码为UTF-8,关键一句:request.setCharacterEncoding("UTF-8");  我的中文乱码问题都是这么解决的~