初学入门:JAVA里字符编码的探索与理解

发表于:2008-10-15 14:46

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:网络转载

  public static void printbyte(byte[] bt)
  {
  for (int i = 0; i < bt.length; i++)
  {
  int hex = (int)bt[i] & 0xff;
  System.out.print(Integer.toHexString(hex) + " ");
  }
  System.out.println(" length = "+bt.length);
  }
  byte[] utf_8 = name.getBytes("utf-8");
  printbyte(utf_8);

  结果是e5 a0 82 length = 3

  哇,三个字节!看来JAVA内部用的真不是UTF-8,那用的是什么呢?UTF-16?看一下便知。  

  byte[] utf_16 = name.getBytes("utf-16");
  printbyte(utf_16);

  结果是fe ff 58 02 length = 4,靠,四个字节了。咦?后面的低16位不正是和开始c_name的十六进制表示一样的吗?看来JAVA真正的内部字符编码和UTF-16有或多或少的联系。JAVA内部究竟是用的什么字符编码呢?这个问题我也找了很久,后来在THINK IN JAVA 3rd的12章里看到一个例子出现了UTF-16BE,难道是它?  

  byte[] utf_16be = name.getBytes("utf-16be");
  printbyte(utf_16be);

  结果出来了:58 02 length = 2

  哈哈,I got it!不多不少两个字节,内容也一样。果然是它。同时我在里面也看到,UNICODE的编码还有一个LE,这里的BE,LE我想应该是bigendian和littleendian吧。
22/2<12
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • liaoyin1234
    2008-11-05 18:08:02

    这个地方可以下载JAVA的视频教程,里面讲得很详细哈

    http://www.ibeifeng.com/read-htm-tid-887-fpage-3.html

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号