日本国产亚洲-日本国产一区-日本国产一区二区三区-日本韩国欧美一区-日本韩国欧美在线-日本韩国欧美在线观看

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

JB8一個jsp文件編寫、保存BUG的因素及更改

JB8一個jsp文件編寫、保存BUG的因素及更改

更新時間:2022-04-28 文章作者:未知 信息來源:網絡 閱讀次數:

在JB8中編寫、保存的jsp文件的時候通常會出現這種錯誤(在狀態欄中提示)
com.borland.primetime.util.AssertionException: gbk
而并不能正確保存jsp文件。

個人修改辦法如下:

這個問題我在用JB8編寫jsp文件時候發現的,現在本人已基本解決(但是改動了jdk類庫里一些代碼)

首先我解析一下原因:

JB8這個問題只出現在jsp文件中,而java代碼則沒有問題
我們用JB(所有JB8以前的版本)編寫程序的時候,項目的編碼(Encoding)應該是GBK(注意是大寫)
這樣我們編寫Java代碼的時候用的就是GBK,在JB8以前版本中,java文件和jsp文件的用的都是項目編碼

(如:GBK),因此所有文件都用GBK編寫

到了JB8就把java文件和jsp文件分開了,java繼續用項目的編碼,而jsp則根據jsp文件頭的
<%@ page contentType="text/html;charset=[encoding]"%>
中[encoding](如GBK、gb2312)來讀取、編寫和寫入文件,如果沒寫明則用ISO-8859-1(這個編碼的寫

法也有問題,后面會有說明修改的方法),但這里用GBK編寫代碼的時候則JB8莫名其妙的把GBK改為小寫

gbk(borland程序員寫錯還是其他原因?!誰知道!),而在jdk類庫中并沒有這中編碼(java是區分大

小寫的),因此就出現以上的錯誤:
com.borland.primetime.util.AssertionException: gbk

解決方法:
在用我的修改方法前,大家錯好能找些關于java字符集(支持的編碼)的資料(論壇精華區有資料)
我這里修改的jdk的類庫,并不修改JB8的代碼(JB8太龐大,找起來不好找)
在jdk類庫中負責編碼別名轉換類是sun.io.CharacterEncoding(在rt.jar包中,jdk目錄是jdk1.4\jre\

lib)

這解析一下別名,
java中支持的編碼比較多,如:ISO8859_1,gb2312,GBK等,而java是區分大小寫的,如果我把ISO8859_1

寫成iso8859_1,java會出錯的,就像JB8把GBK寫成gbk就出錯了,那java錯了一些容錯處理,當他讀到

某些并不是自己支持的編碼是就會去找sun.io.CharacterEncoding,看看這里有沒有對應的編碼轉換,

如果有則轉成標準的編碼,這里我們這些寫得并不標準得編碼成為編碼得別名,而編碼得別名可能會有

很多(這個跟操作系統有關,如ISO8859_1就有很多中寫法:iso_8859-1,iso8859_1)
別名具體的英文名字解析我不記得了,我自己按自己的理解把它叫做別名

接著我簡要說明一下sun.io.CharacterEncoding是怎樣實現別名的轉換
說起來很簡單,就是用一個HashMap做key與value的對應表
sun.io.CharacterEncoding部分編碼如下(用jad反編譯出來的)
((HashMap) (obj)).put("us-ascii", "ASCII");
((HashMap) (obj)).put("ascii", "ASCII");
((HashMap) (obj)).put("646", "ASCII");
((HashMap) (obj)).put("iso_646.irv:1983", "ASCII");
((HashMap) (obj)).put("ansi_x3.4-1968", "ASCII");
((HashMap) (obj)).put("iso646-us", "ASCII");
((HashMap) (obj)).put("default", "ASCII");
((HashMap) (obj)).put("ascii7", "ASCII");
((HashMap) (obj)).put("8859_1", "ISO8859_1");
((HashMap) (obj)).put("iso_8859-1:1987", "ISO8859_1");
((HashMap) (obj)).put("iso-ir-100", "ISO8859_1");
((HashMap) (obj)).put("iso_8859-1", "ISO8859_1");
((HashMap) (obj)).put("iso-8859-1", "ISO8859_1");
((HashMap) (obj)).put("iso8859-1", "ISO8859_1");
。。。。。

這個對應表比較大,但找起來并不困難
對照前面jb8的問題,我們很容易就找到原因所在,這個對應表中并沒有gbk和GBK的對應!!!!
那我們就知道如何解決了,自己加!!!
((HashMap) (obj)).put("gbk", "GBK");
(【現在不知道有沒有記錯】后來我同時發現JB8也寫錯了一個編碼ISO-8859_1,這個在對應表中也沒有

,所以建議大家也加上:
((HashMap) (obj)).put("ISO_8859-1", "ISO8859_1");

然后編譯自己sun.io.CharacterEncoding,然后加到JB8的jdk1.4的rt.jar包中即可
(怎樣操作請參考jar.exe的說明,在命令窗口運行jar就有幫助)


以后JB8就不會出錯了!哈哈 :)

如果對本人理解不認同或有更好的解決方法請指出,歡迎討論。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

主站蜘蛛池模板: 五月天久久久 | 97在线国产视频 | 亚洲第一区精品观看 | 特级做人爱c欧美网站 | 欧美一级视频精品观看 | 精品欧美在线 | 爱干在线| 国产精品久久久久影院嫩草 | 日韩高清在线日韩大片观看网址 | 婷婷久久综合九色综合98 | 久久综合中文字幕一区二区三区 | 国产超级碰碰在线公开视频 | 天堂亚洲网 | 中文国产欧美在线观看 | 久久综合色鬼 | 在线国产视频观看 | 国产永久高清免费动作片www | 日韩有码在线观看 | 欧美精品在线视频观看 | 日本欧美一区二区三区 | 久久国内精品自在自线400部o | 久久精品一 | 国产草比 | 欧美精品网站 | 999久久久免费精品国产牛牛 | 欧美日韩视频二区三区 | 人人澡人摸人人爽歪歪 | 色香影视 | 波多野野结衣1区二区 | 国内精品久久久久影院老司 | 色播99| 欧美激情一区二区三区蜜桃视频 | 久久久国产精品免费视频 | 每日最新avhd101天天看新片 | 国产免费一区二区三区免费视频 | 国产亚洲欧美日韩综合综合二区 | 国产1000部成人免费视频 | 久久九色综合九色99伊人 | 久久亚洲aⅴ精品网站婷婷 久久亚洲国产精品五月天 久久亚洲国产精品五月天婷 | 亚洲婷婷综合色高清在线 | 香港台湾日本三级纶理在线视 |