QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 940|回复: 1

JAVA中文输出问题,知道的帮帮忙

[复制链接]
发表于 2006-1-3 15:28:37 | 显示全部楼层 |阅读模式
不知道怎么搞,这段程序就是不支持中文编码,输出英文没有问题,输出的中文都是?号,程序只有在这一段有设置charset,请知道的高手帮个忙,谢谢了!

import java.nio.ByteBuffer;
import java.nio.charset.Charset;

import org.apache.commons.logging.*;

public abstract class ByteBufferMessage
{
        private static Log        log        = LogFactory.getLog(ByteBufferMessage.class);
        public static Charset        charset        = Charset.forName("gbk");

        static
        {
                String charsetName = System.getProperty("notepad.charset");
                if (charsetName != null)
                {
                        try
                        {
                                if (Charset.isSupported(charsetName))
                                        charset = Charset.forName(charsetName);
                                else
                                        log.fatal("Charset " + charsetName + " is not supported!");
                        }
                        catch (Exception e)
                        {
                                log.fatal("Failed to load charset " + charsetName + ": " + e.getMessage(), e);
                        }
                }
        }

        private ByteBuffer                buffer;

        public abstract int getLength();

        public abstract String getDescription();

        public abstract String toString();

        protected void initBuffer()
        {
                initBuffer(getLength());
        }

        private void initBuffer(int size)
        {
                buffer = getBuffer(size);
        }

        public void releaseBuffer()
        {

        }

        public ByteBuffer toBuffer()
        {
                initBuffer();
                writeTo(buffer);
                buffer.flip();
                return buffer;
        }

        public abstract void writeTo(ByteBuffer buffer);

        public static ByteBuffer getBuffer(int size)
        {
                return ByteBuffer.allocateDirect(size);
        }

        public static void releaseBuffer(ByteBuffer buffer)
        {
               
        }
}
发表于 2006-3-13 16:26:00 | 显示全部楼层
//对ByteBuffer进行解码
  public static String decode(ByteBuffer byteBuffer) {
    Charset charset = Charset.forName("ISO-8859-1");
    CharsetDecoder decoder = charset.newDecoder();
    try {
      CharBuffer charBuffer = decoder.decode(byteBuffer);
      String result = toChinese(charBuffer.toString());
      return result.trim();
    }
    catch (Exception e) {
      return null;
    }
  }

  //将当前的字符串转换为汉字
  public static String toChinese(String strvalue) {
    try {
      if (strvalue == null) {
        return null;
      }
      else {
        strvalue = new String(strvalue.getBytes("ISO8859_1"), "GBK");
        return strvalue;
      }
    }
    catch (Exception e) {
      return null;
    }
  }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 20:21 , Processed in 0.037206 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表