小偉

          我的java筆記

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            29 隨筆 :: 1 文章 :: 23 評論 :: 0 Trackbacks
          :
          當用 JDBC 向數(shù)據(jù)庫中插入數(shù)據(jù)或從數(shù)據(jù)庫中提取數(shù)據(jù)時 , 為何有時中文字符會顯示為亂碼 ?

          :
          這個問題的實現(xiàn)通常與各個 JDBC driver 的實現(xiàn)有關(guān) . 目前大多數(shù) JDBC driver 采用本地編碼格式來傳輸中文字符 , 例如中文字符 "0x4175" 會被轉(zhuǎn)成 "0x41" "0x75" 進行傳輸 . 因此我們需要對 JDBC driver 返回的字符以及要發(fā)給 JDBC driver 的字符進行轉(zhuǎn)換 .

          當用 JDBC driver 向數(shù)據(jù)庫中插入數(shù)據(jù)時 , 需要先將 Unicode 轉(zhuǎn)成 native code; JDBC driver 從數(shù)據(jù)庫中查詢數(shù)據(jù)時 , 則需要將 native code 轉(zhuǎn)換成 Unicode. 下面給出了這兩種轉(zhuǎn)換的實現(xiàn) :


          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 設(shè)置了正確 的字符集屬性 , 以上 2 個方法就不需要了 .


          :
          當用 Servlet 來處理 http 請求并產(chǎn)生返回的 HTML 頁面時 , 如何使 HTML 頁面中的中文字符能夠正常顯示 ?

          :
          javax.servlet.http.HttpResponse
          類用于產(chǎn)生返回頁面 . 通過 HttpResponse 定義的方法 getOutputStream() 可以獲得 ServletOutputStream 的實例 , 這樣用戶就可以利用 ServletOutputStream.write 方法向輸出流中寫入返回頁面的內(nèi)容 . 但是 ServletOutputStream 使用的是缺省的編碼方式 , 如果要使返回頁面中的中文字 符能夠正常顯示 , 最好顯示地指定所用的字符編碼方式 . 通常需要構(gòu)造一個 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();

          }


          :
          如何設(shè)置 Java WebServer CLASSPATH, 以包含用戶的 class 文件 ?

          :
          有兩種方法可以設(shè)置 Java WebServer CLASSPATH 環(huán)境變量 , 以使用戶編寫的 Servlet 能夠調(diào)用用戶的 class 文件 .
          將用戶的 class 文件放到 JavaWebServer_Dir/classes 目錄下 , Java WebServer 啟動時 ,classes 目錄被自動加入到 CLASSPATH 環(huán)境變量中了 .
          修改 httpd.nojre 文件 , 將用戶 class 文件所在的路徑名加到 CLASSPATH 環(huán)境變量中.
          posted on 2006-12-24 18:43 小偉 閱讀(157) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 兴宁市| 万盛区| 长葛市| 哈尔滨市| 昌邑市| 黑水县| 迁西县| 鹤峰县| 宝山区| 铅山县| 米脂县| 通辽市| 临海市| 泸州市| 江北区| 吉首市| 德昌县| 交口县| 青海省| 丹寨县| 固始县| 青冈县| 高邑县| 买车| 五指山市| 盐亭县| 法库县| 康定县| 婺源县| 伊宁市| 宝丰县| 永吉县| 衡阳市| 永嘉县| 乡城县| 桑日县| 景宁| 彩票| 文安县| 临漳县| 庐江县|