1.数据库环境:
系统/数据库版本:rhel4.7+ids11.50uc5
informix用户环境:
INFORMIXDIR=/opt/informix; export INFORMIXDIR
INFORMIXSERVER=ids11_online_net; export INFORMIXSERVER
ONCONFIG=onconfig; export ONCONFIG
PATH=${PATH}:${INFORMIXDIR}/bin; export PATH
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${INFORMIXDIR}/lib:${INFORMIXDIR}/lib/esql; export LD_LIBRARY_PATH
LANG=zh_CN.gb; export LANG
DBLANG=zh_CN.gb; export DBLANG
DB_LOCALE=zh_CN.gb; export DB_LOCALE
SERVER_LOCALE=zh_CN.gb; export SERVER_LOCALE
CLIENT_LOCALE=zh_CN.gb; export CLIENT_LOCALE
测试表:
建立一个名为dbmon的库,建立表 t1 (id char(10),name char(10),info char(20));
导入数据
001 测试1 测试001测
002 test2 test002tes
003 测试工3 测试小幅3
2.JSP环境:
系统/web环境:windows xp+tomcat5.0+jdk1.4.2+jdbc3.00jc3
测试jsp文件
t3.jsp
===============================================================
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
中文字符传送查询
t4.jsp
===============================================================
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
中文字符接收查询数据库<%
String sname = new String(request.getParameter("sname").getBytes("ISO-8859-1"));
//String sname = request.getParameter("sname")
//String sname = request.getParameterNames("sname")
//byte[] tmpbyte = sname.getBytes("ISO-8859-1");
//sname = new String(tmpbyte);
%>
<%= sname %>
<%
Class.forName("com.informix.jdbc.IfxDriver").newInstance();
String url = "jdbc:informix-sqli://192.168.80.120:9122/dbmon:INFORMIXSERVER=ids11_online_net;user=informix;password=informix";
//testDB为你的数据库名
Connection conn= DriverManager.getConnection(url);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from t1 where name='"+sname+"';";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) { %>
您的第一个字段内容为:<%= rs.getString(1) %>
您的第二个字段内容为:<%= rs.getString(2) %>
您的第三个字段内容为:<%= rs.getString(3) %>
<% } %>
<% out.print("数据库操作成功,恭喜你"); %>
<%rs.close();
stmt.close();
conn.close();
%>
3.结果:从t3传送中文到t4的结果正确,从t4通过jdbc连接到数据库查询返回结果正常.
4.分析:
1)从t3.jsp传中含中文的变量值到t4.jsp,使用了getBypes("ISO-8859-1"),因为默认的传送使用的是IS0-8859-1的编码模式,需要转换成当前编码.
String sname = new String(request.getParameter("sname").getBytes("ISO-8859-1"));
2)数据库环境为中文zh_CN.gb,以支持中文查询.
以上仅为本次测试分析.
阅读(1025) | 评论(0) | 转发(0) |