Chinaunix首页 | 论坛 | 博客
  • 博客访问: 173696
  • 博文数量: 38
  • 博客积分: 2431
  • 博客等级: 少校
  • 技术积分: 470
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-20 09:49
文章分类

全部博文(38)

文章存档

2011年(2)

2010年(14)

2009年(10)

2008年(12)

我的朋友

分类: 系统运维

2009-11-26 13:07:19

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) |
给主人留下些什么吧!~~