程序运行环境:AIX,运行时有指定参数-Dfile.encoding=GBK,接收JMS消息的格式是UTF-8,现在需要将接收到的消息转为GBK字符集,中文能正常显示,但是发现有的中文前面多了一个"?"号。用String utf = new String("中文".getBytes(),"UTF-8");String GBK_format = new String (utf.getBytes("GBK"),"GBK");做了一个模拟,并将字符串写到一个文本中,发现不是乱码就是问号,请问如何解决?重点是程序是在Windows中文环境下编译的,放在AIX上去运行,运行时指定了参数-Dfile.encoding=GBK,中文基本都能正常显示,但是有些中文前面多了一个问号。

解决方案 »

  1.   

    这个我觉的是因为有中英文混杂的地方转编码才会出现?之类的,因为utf8和gbk编码长度不一样啊
      

  2.   

     IBM的小型机都出来了
    我前段时间碰到类似的问题,不过我不是AIX,而是Symbian,当时从服务器下载下来的一直都是乱码或?,后来我发现不能一开始用字符串读取,如果直接用字节数组就不会出现乱码或?了,类似这样
    byte[] b = new byte[1024];
                    int len = 0;
                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
                    DataOutputStream dops = new DataOutputStream(baos);
                    while ((len = in.read(b)) != -1) {
                        dops.write(b, 0, len);
                    }
                    
                    byte[] bytes = baos.toByteArray();
      

  3.   

    谢谢,不过我出问题的地方是JMS消息,接收到的就是一个字符串,好像是不可以用字节数组去接收的