发信人: hht()
整理人: consultant(2000-02-22 08:18:56), 站内信件
|
好长时间没用过java了,刚好今天有人问我,我也闲的没事儿,呵呵,看了一下 。关于JDBC的中文问题,我以前写过一篇文章,不过那时候用JDBC-ODBC桥好像有 问题,下面是我这次用的环境:
JDK1.2.2,NT4.0中文,MS SQL7.0英文,客户端Win2000,源代码:
import java.sql.*;
import java.io.*;
public class JDBCExample{
public static void main(String args[]){
try{
PreparedStatement stmt;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn =DriverManager.getConnection ("jdbc:odbc:test","sa","" );
stmt = conn.prepareStatement("insert into test values(?)");
String s=args[0];
byte[] b=s.getBytes();
//第一种方法,不过用MS SQL Enterprise Manager看表内容有问题,输出倒是 没问题,奇怪
stmt.setBytes(1,b);
//第二种方法,没有任何问题,可能换成别的InputStream也有行的,没试过
ByteArrayInputStream is=new ByteArrayInputStream(b);
stmt.setAsciiStream(1,is,b.length);
//执行插入操作
stmt.executeUpdate ();
}catch(Exception e){
System.out.println(e);
}
}
}
另外,他做的这个程序是用servlet传参数,还有人问过我传入的中文有问题,我 也一块贴出来了,其实解决办法以前写过,这个的环境是JDK1.2.2+JSDK2.1,IE5
出错的原因是IE把中文字符串转成单字节字符串了,只要做一个转换
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class EncodingExample extends HttpServlet {
public void doGet (HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException,UnsupportedEncodingExcept ion
{
response.setContentType("text/html;charset=GB2312");
PrintWriter out = response.getWriter();
out.println("<html>" +
"<head><title>Encoding Example</title></head>"
);
String query = request.getParameter("query");
byte[] temp = query.getBytes("8859_1");
query = new String(temp, "GB2312");
if (query != null) {
System.out.println(query);
out.println(query);
}
out.println("</body></html>");
out.close();
}
}
写的比较简单,大概原理是这样了,不知道在别的环境下有没有问题,没试过
-- ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.97.228.246]
|
|