精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● Java>>JAVA编程>>中文问题>>JDBC-ODBC and Servlet中文问题

主题:JDBC-ODBC and Servlet中文问题
发信人: 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]

[关闭][返回]