字符串-不同的编码格式下所占用的字节数【转】

英文字母和中文汉字在不同的编码格式下,所占用的字节数也是不同的,我们可以通过下面的例子来看看在一些常见的编码格式下,一个英文字母和一个中文汉字分别占用多少字节。

import java.io.UnsupportedEncodingException;

public class EncodeTest {

 public static void printByteLength(String s, String encodingName) {

  System.out.print("字节数:");

  try {

   System.out.print(s.getBytes(encodingName).length);   }

catch (UnsupportedEncodingException e) {

   e.printStackTrace();   

}   

System.out.println(";编码:" + encodingName);  }

 public static void main(String[] args) {

  String en = "A";   String ch = "人";   // 计算一个英文字母在各种编码下的字节数  

 System.out.println("英文字母:" + en);  

 EncodeTest.printByteLength(en, "GB2312");  

 EncodeTest.printByteLength(en, "GBK");   

EncodeTest.printByteLength(en, "GB18030");   

EncodeTest.printByteLength(en, "ISO-8859-1");

  EncodeTest.printByteLength(en, "UTF-8");

  EncodeTest.printByteLength(en, "UTF-16");   

EncodeTest.printByteLength(en, "UTF-16BE");  

 EncodeTest.printByteLength(en, "UTF-16LE");

  System.out.println();

  // 计算一个中文汉字在各种编码下的字节数

  System.out.println("中文汉字:" + ch);

  EncodeTest.printByteLength(ch, "GB2312");

  EncodeTest.printByteLength(ch, "GBK");

  EncodeTest.printByteLength(ch, "GB18030");  

 EncodeTest.printByteLength(ch, "ISO-8859-1");   

EncodeTest.printByteLength(ch, "UTF-8");  

 EncodeTest.printByteLength(ch, "UTF-16");  

 EncodeTest.printByteLength(ch, "UTF-16BE");  

 EncodeTest.printByteLength(ch, "UTF-16LE");  } }

结果:

英文字母:A 字节数:1;编码:GB2312 字节数:1;编码:GBK 字节数:1;编码:GB18030 字节数:1;编码:ISO-8859-1 字节数:1;编码:UTF-8 字节数:4;编码:UTF-16 字节数:2;编码:UTF-16BE 字节数:2;编码:UTF-16LE

中文汉字:人 字节数:2;编码:GB2312 字节数:2;编码:GBK 字节数:2;编码:GB18030 字节数:1;编码:ISO-8859-1 字节数:3;编码:UTF-8 字节数:4;编码:UTF-16 字节数:2;编码:UTF-16BE 字节数:2;编码:UTF-16LE