千家信息网

EBS 11i ojspCompile.pl 编译jsp乱码 encoding

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,11i环境,一般来说jsp是重启apache后自动编译的,但是因为某些环境设置,需要手动编译jsp。11i的编译路径:$JTF_TOP/admin/scripts/ojspCompile.pl编译命令
千家信息网最后更新 2024年11月23日EBS 11i ojspCompile.pl 编译jsp乱码 encoding

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"%>测试乱码

上传至服务器$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。


编译 编码 环境 文件 乱码 命令 代码 服务器 编译器 路径 utf-8 中文 服务 不同 相同 大功告成 一般来说 两个 大功 字符 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库联系方式只能是11位数字 百里平台网络技术 深圳锦绣科技园阿里数据库 未名学微论文数据库 常见的网络安全主题班会 无锡软件开发哪个好 添加数据库分类 张家口服务器机柜哪里便宜 五g网络技术最早使用的国家 安卓手机设置无法连接到服务器 软件开发和数控编程哪个好一点 把自己数据库打包发给别人怎么弄 洛克王国老宠物pk在哪个服务器 数据库子集求差 海淀区网络软件开发质量推荐 网络安全怎么样才不被骗 数据库怎么添加年龄 HP远程管理服务器模块简称 hive数据库阿里云 服务器散热器和家用 黑曼居服务器的编号 双鹿服务器cpu供电怎样接 oracle数据库建立连接 昆明中通服网络技术有限公司 家庭服务器选什么系统 软件开发没有本科学历 服务器内存测试工具 海弦网络收音机服务器收费吗 sap使用什么数据库 基于构建的软件开发过程
0