这个问题和编码格式无关,主要是IDL文件的问题,CORBA处理字符串有:String和wstring两种类型,string类型主要用于处理ASCII类型的字符串,wstring用于处理多字节的字符串,例如:中文。所以,你在定义你的IDL文件时,凡是有用到中文的接口方法的参数,要用wstring来代替string类型即可,祝你好运!

解决方案 »

  1.   

    ltq_77现在进度如何?可否告知
      

  2.   

    我还有一点想补充,那就是你在“运行”里敲“cmd”时,看看命令行方式下是否能出现中文,比如“(C) 版权所有……”,如果没有,那么你编译的java就不支持中文,有中文的地方就会出现乱码。可以通过改注册表使得"cmd.exe"的codepage变成GB码。这样编译的java就可以正确出现中文了。试试看,祝你成功。
      

  3.   

    到大富翁论坛(www.delpibbs.com)看看,那里的封面上现在有两篇文章专门讲JAVA中的汉字问题。
      

  4.   

    不好意思,是 www.delphibbs.com
      

  5.   

    服务端如何使用C++的??
    用java idl能否使用C++代码呢?
      

  6.   

    我做过和你差不多的系统,不过我的服务端是java,客户端是c++,不过我没有传输中文的需求,不过我可以给你一个建议,就是你在客户端也用C++试一下看是否有同样的问题,如果,问题不存在那么是java的编码问题,那就容易解决了。
      

  7.   

    zhangxiaogen(笨笨) 可以回答我的问题吗
      

  8.   

    服务端如何使用C++实现idl定义的接口呢?
    我现在有一个C++写的dll,想改在corba环境
    下让java调用,如何做呢
      

  9.   

    首先你要掌握CORBA的基本架构,如果你对CORBA还不熟悉的话,我建议你去买本书看看,我觉得比较好的有《基于C++ CORBA高级编程》(80.00)。
    你将一个C++写的dll改成CORBA环境下让java来调用,首先,你应该将dll提供的接口提出来,形成一个符合CORBA的idl的接口文件,然后用idl for C++的编译器将idl编译形成服务端,然后将其实现。然后,使用idl for java的编译器将idl编译形成客户端,然后实现即可。具体细节需要你先去了解CORBA的一些基础知识。而且现在CORBA的实现有好几家如:VisiBroker、omniORB等,不过他们都是按照CORBA的标准去实现的,只是有一些地方不同,这需要看相应的文档。我提醒你,你要根据你的项目需求来选择采用jni还是CORBA来实现,如果你没有分布式的需求,你就没有必要用CORBA来实现,因为jni的实现的效率比同等情况下的CORBA环境的效率要高,如果接口要传输的数据量比较大的话,表现尤为明显。应为CORBA需要对数据进行打包和解包的一些列的工作。好了,太多我也不多说的,希望对你又帮助。
      

  10.   

    很感谢,知道了不少,不知道的更多了:
    1。VisiBroker在jbuilder里面有没有提供呢?
    2。idl for c++编译器我没有,“用idl for C++的编译器将idl编译形成服务端,然后将其实现”实现是用原来的dll实现,这其中好象比较模糊,需要修改原来的C++代码吗?
    3。如何把dll提供到命名服务器里面呢?
    4。我使用jdk里面的tnameserv做jndi可以吗?
      

  11.   

    gdsean(摇滚java) 
    1 VisiBroker在jbuilder里面有
    2 对需要修改原来的代码,你需要按照CORBA的要求来实现,dll是COM的规范,这两者有很大的差异
    3 CORBA的实现中有相应的文档
    4 可以,jdk中的tnameserv是sun的一个CORBA的命名服务
      

  12.   

    zhangxiaogen(笨笨):
    visibroker for java或者tnameserv可以
    支持C++服务端吗?是否应该下一个VisiBroker for C++呢?
    idl for c++编译器从哪里下载呢?
      

  13.   

    visibroker for java或者tnameserv可以支持C++服务端吗? --------不可以,这里明明写着是java的嘛。idl for c++编译器从哪里下载呢?---------我也不知道,你用搜索引擎取搜一下不就可以了
      

  14.   

    那么我想将C++的dll做成corba服务端必须使用什么
    服务器来配置呢?是否应该下一个VisiBroker for C++呢?
    还有什么可以选择?
      

  15.   

    你可以下一个,还有omniORB等,你搜索一下应该能够了解更多选择。
      

  16.   

    给个例子有吗?helloworld就可以了
    [email protected]
      

  17.   

    比如visiBorker for C++的Bank_Agent的例子,
    我编译例子不通过,大概是bcb的make有问题,
    他使用OSAgent的,没有通过jndi服务是吗?
    OSAgent是种什么方式呢?可以在分布式环境运行吗?C:\bank_agent>make -f Makefile.cpp
    MAKE Version 5.2  Copyright (c) 1987, 2000 Borland
    Error Makefile.cpp 2: Command syntax error
    *** 1 errors during make ***
      

  18.   

    我没有用过bcb,我的Corba是在SGI上的,用的是omniORB,所以你所说得我也不知道怎么回答!
      

  19.   

    David_lin() 谢谢你,解决了我头痛的问题!