用PreparedStateString sql="select * from aaa where ccc like ?"; PreparedStatement ps=con.prepareStatement(sql); ps.setString(1,"%阿拉伯文%"); ResultSet rs=ps.executeQuery();
这个要看数据库设定的代码集,只要将SQL转成相应的代码集就可以了. 比如对方是拉丁字符集,也就是欧美默认的ISO-8859-1那么你的SQL应该写成: String strSQL ="select * from aaa where ccc like '%阿拉伯文%'"; strSQL = new String(strSQL.getBytes(),"ISO-8859-1"); Statement.execute(strSQL) 执行之
String strSQL ="select * from aaa where ccc like '%阿拉伯文%'"; strSQL = new String(strSQL.getBytes("ISO-8859-1"),"阿拉伯文Encoding"); Statement.execute(strSQL) 执行之
上面的方法我都试过了 还是不能解决问题 也许是我说的不够具体 (不过还是十分感谢各位!) 程序是这样的: 页面提交之后 aaaaa=new String(request.getParameter("firstname").getBytes("8859_1"),"UTF-8"); //firstname就是页面输入的阿拉伯文 String sqlstr="select aaa from bbb where aaa like N'%"+aaaaa+"%'"; out.println(sqlstr)//网页上打印的语句都是对的 ResultSet rs=st.executeQuery(sqlstr); 运行结果就查不到 该语句(从网页上COPY)在SQL2000里就可以正确的查到记录
在开发环境里不行的事情我也遇到过,不过到IE就没问题了。
PreparedStatement ps=con.prepareStatement(sql);
ps.setString(1,"%阿拉伯文%");
ResultSet rs=ps.executeQuery();
比如对方是拉丁字符集,也就是欧美默认的ISO-8859-1那么你的SQL应该写成:
String strSQL ="select * from aaa where ccc like '%阿拉伯文%'";
strSQL = new String(strSQL.getBytes(),"ISO-8859-1");
Statement.execute(strSQL) 执行之
strSQL = new String(strSQL.getBytes("ISO-8859-1"),"阿拉伯文Encoding");
Statement.execute(strSQL) 执行之
程序是这样的:
页面提交之后
aaaaa=new String(request.getParameter("firstname").getBytes("8859_1"),"UTF-8");
//firstname就是页面输入的阿拉伯文
String sqlstr="select aaa from bbb where aaa like N'%"+aaaaa+"%'";
out.println(sqlstr)//网页上打印的语句都是对的
ResultSet rs=st.executeQuery(sqlstr); 运行结果就查不到 该语句(从网页上COPY)在SQL2000里就可以正确的查到记录
VC可以的话JAVA也应该可以的我觉得 该怎么办呢??各位高手有什么高见呢?
String sqlstr="select aaa from bbb where aaa like N'%"+aaaaa+"%'";
out.println(sqlstr);
ResultSet rs=st.executeQuery(sqlstr);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
你这一步没有作转换!!!!!!!!!!!!!!!!!!!!