在使用jacorb中传递值对象时,缺省情况下无法正常使用中文值,我看过一些站点,均提到要编/解码。以下是我的解决方法,无需关心编码问题,
第一步:在idl接口定义中将相关类型定义为wstring,如下
struct WORK
{
string rq;
string wid;
string kssj;
string jssj;
wstring gzsm;
wstring gzfl;
wstring xmz;
};
typedef sequence<WORK> list;
typedef sequence<string> days;
interface MsWork
{
list getDay(in days day);
boolean setDay(in list works);
};
使得ORB可以用Unicode去处理相关属性。
第二步:修改jaco.bat,使jvm支持中文gbk或gb18030
@echo off
rem call java interpreter
rem java -Xbootclasspath:"%JACO_HOME%\lib\jacorb.jar;c:\j2sdk1.4.1\jre\lib\rt.jar;%CLASSPATH%"
-Dorg.omg.CORBA.ORBClass=org.jacorb.orb.ORB -Dorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton %*
java -Dorg.omg.CORBA.ORBClass=org.jacorb.orb.ORB -Dorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton %*
将-Xbootclasspath选项去掉,即可支持中文
我在中文winxp(客户端)及中文w2k(服务器),java及jacorb均为1.41版本下测试通过
完整代码请参考http://hlstudio.swiki.net/.uploads/demo/test.rar
[编辑 - 8/28/02 作者: hlstudio] |