j2ee 中文 編碼

          Posted on 2006-04-05 18:59 英雄 閱讀(391) 評論(0)  編輯  收藏 所屬分類: java積累

          1.編碼
          ? ASCII碼:128個碼位。
          ? iso8859-1:又稱為Latin-1 256個碼位。
          ? 從計算機的應用開始,我國已經頒布了多種中文信息編碼標準,
          ? 常用的是GB2312-1980,GB12345,GB13000(GBK),以及最新標準GB18030。向下兼容。
          ? 值得一提的是,最新的GB18030標準將要作為強制標準實行,所有不支持GB18030標準的軟件將不能作??? 為?產品出售。
          ? gb2312:[1~2個字節]
          ? 漢字:第一個字節的值在0xB0到0xF7之間,第二個字節的值在0xA0到0xFE之間。
          ? gb12345,gb13000:[1~2個字節]
          ? 漢字:大致為第一個字節的值在0x81到0xFE之間,第二個字節的值在0x40到0xFE之間。
          ? gb18030:[1~4個字節]
          ? 單字節,其值從0到0x7F
          ? 雙字節,第一個字節的值從0x81到0xFE,第二個字節的值從0x40到0xFE(不包括0x7F)
          ? 四字節,第一個字節的值從0x81到0xFE,第二個字節的值從0x30到0x39,第三個字節的值從0x81到0xFE,第四個字節的值從0x30到0x39。
          ? unicode:
          ? UCS-2:[統一2個字節][現在用的unicode]65536個碼位。
          ? UCS-4:[統一4個字節]以防將來不夠用的2的31次方個 碼位。
          ? codepage:
          ? 各國編碼和unicode的對應表
          ? UTF編碼:
          ? UTF是“UCS Transformation Format”的縮寫。UTF-8 編碼字符理論上可以最多到 6 個字節長,可以編入? 所有可能的2的31次方個 UCS 代碼,是變字節編碼。
          以上編碼統一兼容ascii.
          2.j2ee中文問題解決
          ? 構架情景:
          ? 前臺顯示通過jsp,html;中間java的filter,servelt處理請求;后臺:java通過jdbc driver同數據庫交互。
          ? 基礎:
          ? 1]java運行總是以unicode為內存中存在形式。如:string s="中文";s在運行時內存是unicode編碼。
          ? 2]數據庫有一個存儲編碼集。表示了采用存儲的形式。如:表中記錄一個字段值為"中文",在數據庫中以該編碼集編碼存在。
          ? 3]html有一個網頁編碼,可以通過meta指定。
          ? 流程:
          ? 1)瀏覽器獲得的html總是來源于3個方面:
          ? 1,java直接輸出response,reponse.setContenttype指定編碼
          ? 2,jsp<content type指定編碼
          ? 3, html<meta指定編碼
          ? 前兩種在指定時都同時把生成的html數據按指定編碼編碼傳過來了[把內存unicode轉成對應編碼]。
          ? 后1種的實際編碼要看實際存儲的時候如何存儲的。
          ? 這樣瀏覽器按指定編碼把獲得的html解碼顯示出來。
          ? 2)瀏覽器發送數據時
          ? url根據ie設置可以總是以rtf-8發送,表單數據默認采用網頁編碼發送,當然也可以指定。
          ? 3)java接受數據后首先把url按iso-8859-1解析,得到request參數。然后可以通過在request.setEncod~來按指定編碼解析表單數據[編碼的unicode轉化],否則默認按iso-8859-1解析。
          ?? 4)java訪問數據庫通過jdbc driver。jdbc driver負責完成unicode和db默認編碼的轉化。
          ? 問題列舉:
          ? 如果傳遞的html含有中文,而編碼默認指定為iso-8859-1,出現亂碼
          ? 如果url中含有中文以rtf-8發送,java不處理會出現問題。
          ? 如果瀏覽器發送的form數據含有中文,而沒有通過對應編碼解析request,得到的參數會出現問題。
          ? 如果jdbc driver出現bug,比如mysql,會導致亂碼。
          ?
          ?
          ?
          ?
          ?
          ?
          ?
          ?

          ?

          主站蜘蛛池模板: 石城县| 阳朔县| 广东省| 保亭| 博乐市| 永吉县| 阜康市| 苗栗市| 招远市| 株洲县| 新宁县| 上高县| 沂南县| 阳谷县| 清丰县| 厦门市| 盘山县| 日喀则市| 义乌市| 兰坪| 大方县| 南召县| 阿拉善盟| 曲水县| 龙岩市| 准格尔旗| 石嘴山市| 江陵县| 洛浦县| 长春市| 高州市| 宣化县| 湘乡市| 大埔区| 建阳市| 醴陵市| 镇远县| 大荔县| 永昌县| 西乡县| 习水县|