????JAVA里的String是UNICODE的啊!!你要这么用吧!printf(L"%s",str);

解决方案 »

  1.   

    说错了!!!不好意思java里的String是unicode的在DLL里只有用能输出unicode的函数才可以输出来。
      

  2.   

    没做过,说说想法:
    String有一个构造函数可以指定编码的如
    String s = new String("你好", "US-ASCII");
    这样试试。我记得我以前用C/C++的时候字符编码是两个ASCII组合起来的,好像还是不带符号的byte表示的扩展ASCII码,记不太清了,所以我觉得用移位的方法可能不行。没做过,我也来学习。
      

  3.   

    错了,构造函数是
    byte[] ba = new byte[10];
    ...
    String s = new String(ba, "US-ASCII");
      

  4.   

    我试过了,上面提到的方法还是不行。
    Unicode的编码和扩展ASCII码表不好一一对应,而且需要转换成无符号byte,Java中没有现成的无符号byte,所以还只有自己转。
    建议还是找一找C/C++下面支持Unicode的函数。还有什么好方法,我也学习学习。
      

  5.   

    用byte来传递参数。
    native void test(byte[] str);
      

  6.   

    解决了,可以参照日文的传递的例子。
    http://www5.big.or.jp/~tera/Labo/jni/jni2.html