小伟

我的java笔记

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  29 随笔 :: 1 文章 :: 23 评论 :: 0 Trackbacks
:
当用 JDBC 向数据库中插入数据或从数据库中提取数据时 , 为何有时中文字符会显示为乱码 ?

:
这个问题的实现通常与各个 JDBC driver 的实现有关 . 目前大多数 JDBC driver 采用本地编码格式来传输中文字符 , 例如中文字符 "0x4175" 会被转成 "0x41" "0x75" 进行传输 . 因此我们需要对 JDBC driver 返回的字符以及要发给 JDBC driver 的字符进行转换 .

当用 JDBC driver 向数据库中插入数据时 , 需要先将 Unicode 转成 native code; JDBC driver 从数据库中查询数据时 , 则需要将 native code 转换成 Unicode. 下面给出了这两种转换的实现 :


String native2Unicode(String s) {

if (s == null || s.length() == 0) {

return null;

}

byte[] buffer = new byte[s.length()];

for (int i = 0; i s.length(); i++) { if (s.charAt(i)>= 0x100) {

c = s.charAt(i);

byte []buf = (""+c).getBytes();

buffer[j++] = (char)buf[0];

buffer[j++] = (char)buf[1];

}

else {

buffer[j++] = s.charAt(i);

}

}

return new String(buffer, 0, j);

}

除使用以上两个方法之外 , 有些 JDBC driver 如果对 jdbc driver Manager 设置了正确 的字符集属性 , 以上 2 个方法就不需要了 .


:
当用 Servlet 来处理 http 请求并产生返回的 HTML 页面时 , 如何使 HTML 页面中的中文字符能够正常显示 ?

:
javax.servlet.http.HttpResponse
类用于产生返回页面 . 通过 HttpResponse 定义的方法 getOutputStream() 可以获得 ServletOutputStream 的实例 , 这样用户就可以利用 ServletOutputStream.write 方法向输出流中写入返回页面的内容 . 但是 ServletOutputStream 使用的是缺省的编码方式 , 如果要使返回页面中的中文字 符能够正常显示 , 最好显示地指定所用的字符编码方式 . 通常需要构造一个 OutputStreamWriter , 例程如下 :


public void doGet (HttpServletRequest req, HttpServletResponse res)

throws ServletException, IOException

{

res.setContentType("text/html");

ServletOutputStream out = res.getOutputStream();

OutputStreamWriter ow = new OutputStreamWriter(out,"GB2312");

ow.write("
这是测试 ");

ow.flush();

ow.close();

}


:
如何设置 Java WebServer CLASSPATH, 以包含用户的 class 文件 ?

:
有两种方法可以设置 Java WebServer CLASSPATH 环境变量 , 以使用户编写的 Servlet 能够调用用户的 class 文件 .
将用户的 class 文件放到 JavaWebServer_Dir/classes 目录下 , Java WebServer 启动时 ,classes 目录被自动加入到 CLASSPATH 环境变量中了 .
修改 httpd.nojre 文件 , 将用户 class 文件所在的路径名加到 CLASSPATH 环境变量中.
posted on 2006-12-24 18:43 小伟 阅读(146) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: