你要保证数据库中的编码也是UTF8才行呀!
在你CREATE DATABASE的时候也要选择UTF8编码,你可以试试aaaaa=request.getParameter("input");
    String sqlstr="select aaa from bbb where aaa like N'%"+aaaaa+"%'";
使用8859-1编码试试!

解决方案 »

  1.   

    你的意思是将整个SQL语句再转一下吗
    String sqlstr111=new String(sqlstr.getBytes(),"8859_1");  
    ResultSet rs=st.executeQuery(sqlstr111)
    是这样吗?
      

  2.   

    怎样在CREATE DATABASE的时候选择UTF-8啊?请指教
      

  3.   

    不是,是要将你从JSP页面中读到的变量转成和数据库中编码一样的编码!
    你可以查查SQLSERVER2000的帮助看看它的默认编码是什么,然后将读来的变量转换成相应的编码,应该就没问题了!aaaaa=request.getParameter("input");
        String sqlstr="select aaa from bbb where aaa like N'%"+aaaaa+"%'";
    只是想让你试试使用8859-1编码查询试试!
      

  4.   

    是这样的 必须用下面的方法接收提交 
    aaaaa=new String(request.getParameter("input").getBytes("8859_1"),"UTF-8");
    如果不转换的话 传回来的都是问号了 就已经丢失了     
      

  5.   

    aaaaa=request.getParameter("input");
    直接REQUEST出来,防盗查询语句中去!
      

  6.   

    你去看看SQLSERVER的帮助里面肯定有说到底数据库的编码问题的!
    你有没有试过从数据库中读出数据,然后不要转换直接在页面上显示,正常吗?!快回答,我马上要出去了!
      

  7.   

    那时页面的编码是什么啊!?是GB2312,UTF8还是!?
      

  8.   

    UTF8
    SERVLET里面这么写的: CONTENT_TYPE = "text/html; charset=UTF-8";
      

  9.   

    你确信没有用new String(in,"UTF-8");转换过吗?!如果没转换过,那恭喜你了,你的数据库应该是支持UTF8的了!那就是你查询条件的问题了!
    建议:
    1,把你的查询条件PRINT出来!
    2,把刚刚打印出来的SQL拷贝到SQLSERVER的IDE下执行,如果不行说明还是转换的问题,既NEW STRING(in,?????);问号中是要试的编码!
    我出去一下,回来再讨论!
      

  10.   

    目前的情况是:
    1 我是按照我的主题帖子里面的代码来运行的2 我可以把整个SQL语句打印到网页上 而且网页上显示的这个SQL语句里面就是多国的语言 
      没有乱码 3 把这句SQL语句从网页上COPY到SQLSERVER的查询分析器里面 可以得到正确的结果 而且数据 
      库里存放的数据都是原文 不是乱码 字段类型是“NVARCHAR”4 我用JOptionPane.showMessageDialog 在程序里弹出MESSAGEBOX 都可以看到正确的SQL语句5 如果检索点里不包含多国语言 程序运行结果就是对的 一旦检索点里面包含小语种就检索不
      到结果6 如果把语句换成 insert into aaa values (N'"+aaaaa+"')" 插入库中的全是问号
      

  11.   

    6 如果把语句换成 insert into aaa values (N'"+aaaaa+"')" 插入库中的全是问号
    说明你还是没有转换对!
    能告诉我你用的JDBC是什么版本吗!?看看它的帮助,是不是支持UTF8,(你可以试着把你要执行的SQL语句插入到一个表中然后用IDE看看该表中该记录是不是正常的,如果正常则说明支持,否则就不支持了!)
    SQL与句被JDBC转成乱码了!
      

  12.   

    我来说一下吧,我的数据库是SQL 7.0字符集是936,win2000,jdk1.2
    在连接数据库的URL中加了charset=gb2312时,可以不作任何转换执行所有正确操作.
    在没有设置连接字符集时,则出现乱码.(以SQL server带的工具来看),也无法用java正确读出.
    于是将其转换为8859-1写入,在工具中可正常显示,读出时也做如此设定,则一切恢复正常.
    我用的驱动是tds的,不是microsoft的.
     
      

  13.   

    如果SQL语句里面不包含小语种字符的话 取出没有问题 当然不可能插入小语种了 因为SQL语句里不能包含小语种 当然也是通过转换字符 然后拼成UTF8的码 显示在网页上的
      

  14.   


    下面是我的SERVLET的整个代码 请高手指教package ffffff;import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    import java.util.*;
    import java.sql.*;import java.util.*;
    import java.awt.*;
    import sun.io.*;import java.awt.event.*;
    import javax.swing.*;public class Servlet1 extends HttpServlet {
      private static final String CONTENT_TYPE = "text/html; charset=UTF-8";  /**Initialize global variables*/
      public void init() throws ServletException {
      }
      /**Process the HTTP Get request*/
      public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException
      {
        response.setContentType(CONTENT_TYPE);
        PrintWriter out = response.getWriter();
        String aaaaa="",bbbbb="";
        out.println("<html>");
        out.println("<head><title>Servlet1</title></head>");
        out.println("<body>");
        out.println("<p>The servlet has received a GET. This is the reply.</p>");
          if (request.getParameter("firstname")!=null)
        {
            aaaaa=new String(request.getParameter("firstname").getBytes("8859_1"),"UTF-8");
            out.print("<br>" + aaaaa + "<br>");
        }
        out.print("<form action=\"");
        out.print("ffffff.Servlet1\" ");
        out.println("method=POST>");
        out.println("<input type=text size=20 name=firstname>");
        out.println("<br>");
        out.println("<input type=text size=20 name=lastname>");
        out.println("<br>");
        out.println("<input type=submit>");
        out.println("</form>");
        String url="jdbc:odbc:aa";
        String mystr=new String();
        String mystr2=new String();
            int i = 0;
        String strMessage=new String();
        String xx = "";
        String xx1 = "";
        try{
          Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
          Connection con=DriverManager.getConnection(url,"sa","");
          Statement st=con.createStatement();      String sqlstr="insert into aaa values ('"+aaaaa+"')";
          out.println("sqlstr="+sqlstr);
          ResultSet rs=st.executeQuery(sqlstr);     }      rs.close();
          con.close();
        }
        catch(SQLException e){
          System.out.print("aq:SQLException:"+e.getMessage()+"\n");
        }
        catch(Exception e){
          System.out.print("aq:Exception:"+e.getMessage()+"\n");
      }
        out.println("</body></html>");
      }  public void doPost(HttpServletRequest request,
                        HttpServletResponse response)
          throws IOException, ServletException
      {
          doGet(request, response);
      }
      /**Clean up resources*/
      public void destroy() {
      }
    }
      

  15.   

    这里面关键部分就是
    提交:
          private static final String CONTENT_TYPE = "text/html; charset=UTF-8";
          response.setContentType(CONTENT_TYPE);
          PrintWriter out = response.getWriter();      out.print("<form action=\"");
          out.print("ffffff.Servlet1\" ");
          out.println("method=POST>");             aaaaa=new String(request.getParameter("firstname").getBytes      ("8859_1"),"GB2312");连库:
          String url="jdbc:odbc:aa"; //aa是数据源
          Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
          Connection con=DriverManager.getConnection(url,"sa","");
          Statement st=con.createStatement();执行SQL:
          String sqlstr="insert into aaa values ('"+aaaaa+"')";
          ResultSet rs=st.executeQuery(sqlstr);
      

  16.   

    好了代码都看过了,现在估计问题处在JDBCODBC上!你有没有试过SQLSERVER的JDBC啊!
    1.jdbc下载:http://www.microsoft.com/china/sql/downloads/2000/jdbc.asp
    后setup.
    2.加入classpath中
    <%@ page contentType = "text/html; charSet=gb2312" %>
    <%@ page language="java" import = "java.sql.*" %>
    <%
      /**address: SQL Server的连接参数*/
      String address = "jdbc:microsoft:sqlserver://127.0.0.1:1433";
      /***user: 数据库用户名*/
      String user="sa";
      /**passwd: 用户密码*/
      String passwd="";
      /*数据库名*/
      String database = "online";  DatabaseMetaData conMD = null; 
      java.sql.Statement stmt = null;
      Connection con = null;
      ResultSet sqlRst = null;  try
      {
        Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
        con = DriverManager.getConnection(address,user,passwd);    conMD = con.getMetaData();
        con.setCatalog(database);
        stmt = con.createStatement();
      }catch(Exception fs) {
        out.print("Connection ERROR</p> <br>");
      }
      out.print("Connection</p> <br>");  try
      {
        stmt=con.createStatement();
        sqlRst = stmt.executeQuery("SELECT * FROM mytable");
        out.print("stmt  OK");
      }catch(Exception  gr)
      {
        out.print("stmt  ERROR");
      }  while (sqlRst.next()) 
      { 
        out.print("<p>name :" + sqlRst.getString("name") + "</p> <br>");
        out.print("<p>old :" + sqlRst.getString("old") + "</p>");
      }
    %> 
    行了通知我!
      

  17.   

    我的数据源叫aa 是这样写吗?
    String address = "jdbc:microsoft:sqlserver:aa";
      

  18.   

    String database = "aa";
    你可没仔细看我给你的代码哦!
      

  19.   

    不需要DSN的,String address = "jdbc:microsoft:sqlserver://127.0.0.1:1433";
    制订SQLSERVER地址,String database = "aa";制定库名!
      

  20.   

    这句话反斜杠也在双引号里面吗?String address = "jdbc:microsoft:sqlserver://127.0.0.1:1433";
      

  21.   

    如果我想通过连接DSN连库呢?
      

  22.   

    连别人的就用别人的IP地址!
    如果要用DSN那还要用JDBC做什么,不就是用了JDBC——ODBC了吗!?
      

  23.   

    机器名是 sunyt 数据库名叫“发布”
    String address = "jdbc:microsoft:sqlserver://sunyt:1433";
      String user="sa";
      String passwd="";
      String database = "预发布";这样写有问题吗? 好象还是连不上 是不是端口号的问题?
      

  24.   

    String address = "jdbc:microsoft:sqlserver://sunyt:1433";
    String user="sa";
    String passwd="";
    String database = "发布";
    应该是没问题的!如果不行的话,试着试试DATABASE名不哟用中文,再看看端口对不对!
      

  25.   

    1433这个端口是怎么定的呢 是SQL自己定的吗?
      

  26.   

    这句话运行完了就被CATCH了
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
      

  27.   

    是不是要 IMPORT什么东西啊
      

  28.   

    那是你的驱动不对呀!你要把它加入到CLASSPATH的呀!
      

  29.   

    如果你用的是NT,或2000在系统--环境里面设置!
    例如:D:\jdk1.2.2\lib\tools.jar;d:\jdk1.2.2\lib\dt.jar;e:\oracle\ora81\jdbc\lib\classes111.zip;d:\j2sdkee1.2.1\lib\j2ee.jar
    如果是98则在AUTOEXEC.BAT里面设置!
    例如:set classpath=D:\jdk1.2.2\lib\tools.jar;
      

  30.   

    自己看SQLSERVER中的帮助文件吧!
      

  31.   

    阅读JDBC文档,,有丰富的知识待学啊!
      

  32.   

    我在系统变量里面新建了一个名为CLASSPATH的变量 
    值是C:\Program Files\Microsoft SQL Server 2000 JDBC\lib\msbase.jar;C:\Program Files\Microsoft SQL Server 2000 JDBC\lib\mssqlserver.jar;C:\Program Files\Microsoft SQL Server 2000 JDBC\lib\msutil.jar这样写对吗?