EBS 11i ojspCompile.pl 編譯jsp亂碼 encoding

來源:互聯網
上載者:User

標籤:compile   ojsp   pl   

11i環境,一般來說jsp是重啟apache後自動編譯的,但是因為某些環境設定,需要手動編譯jsp。


11i的編譯路徑:$JTF_TOP/admin/scripts/ojspCompile.pl

編譯命令:perl $JTF_TOP/admin/scripts/ojspCompile.pl --compile -p 16 -s xxx.jsp


一個簡單的jsp檔案test1.jsp,檔案編碼格式GB2312,代碼如下:

<%@page language="java" contentType="text/html; charset=gb2312"%><html><body><font size="+2" color="#000000">測試亂碼</font></body></html>

上傳至伺服器$OA_HTML/SSO_OA 目錄下,用ojspCompile編譯,編譯通過的話,伺服器$OAD_TOP/_pages/_oa__html/_sso__oa/ 下產生兩個class檔案:_test1.class 和 _test1$__jsp_StaticText.class 。

將class下載到本地,反編譯,發現裡面中文是亂碼,這也就能解釋為什麼瀏覽器訪問是亂碼了。


於是懷疑是編譯器的問題,有查到資料說編譯器預設編譯編碼是IS0-8859-1,於是就在考慮如何修改編譯編碼。


將$JTF_TOP/admin/scripts/ojspCompile.pl下載到本地,開啟後搜尋“javac”看到這麼一段:

sub javac_internal {my  $osname = undef;   chop ($osname = `uname -s`);   my ($java_ver) = &myrun(30, "$java -version 2>&1");   chomp($java_ver);   if($java_ver =~/1.5/)   {        if (($osname eq "AIX") || ($osname eq "OSF1"))        { return ‘exec javac -nowarn‘ }        elsif ($ISWINNT) { return ‘javac -J-client -nowarn‘ }        else { return ‘exec javac -J-client -nowarn‘ }   }    elsif ($ISWINNT) { return ‘javac -nowarn‘ }    else { return ‘exec javac -nowarn‘ }}


javac命令是可以指定編碼的,在javac命令後加上 -encoding GB2312 即可。

因為我當前使用的11i環境包括資料庫相關編碼都是GB2312的, 所以我把這裡改成了GB2312編碼,當然,不同環境也可以改成utf-8。


修改後的代碼:

sub javac_internal {my  $osname = undef;   chop ($osname = `uname -s`);   my ($java_ver) = &myrun(30, "$java -version 2>&1");   chomp($java_ver);   if($java_ver =~/1.5/)   {        if (($osname eq "AIX") || ($osname eq "OSF1"))#old        { return ‘exec javac -nowarn‘ }        { return ‘exec javac -nowarn -encoding GB2312‘ }        elsif ($ISWINNT) { return ‘javac -J-client -nowarn‘ }else { return ‘exec javac -J-client -nowarn‘ }   }    elsif ($ISWINNT) { return ‘javac -nowarn‘ }#old    else { return ‘exec javac -nowarn‘ }else { return ‘exec javac -nowarn -encoding GB2312‘ }}


保證jsp檔案的編碼與當前設定的編碼相同,然後重新執行ojspCompile編譯。

大功告成,反編譯後的class內中文正常顯示。



R12環境的ojspCompile路徑:$FND_TOP/patch/115/bin ,這個版本裡已經預設添加編譯字元集為utf-8。


本文出自 “路漫漫其修遠兮…” 部落格,請務必保留此出處http://baser.blog.51cto.com/4153192/1953654

EBS 11i ojspCompile.pl 編譯jsp亂碼 encoding

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.