设为首页 加入收藏

TOP

Java中的字符编码与解码
2014-11-23 08:20:35 来源: 作者: 【 】 浏览:17
Tags:Java 字符 编码 解码

  import java.io.BufferedReader;
  import java.io.FileInputStream;
  import java.io.FileNotFoundException;
  import java.io.FileOutputStream;
  import java.io.IOException;
  import java.io.InputStreamReader;
  import java.io.OutputStream;
  import java.io.OutputStreamWriter;
  import java.io.UnsupportedEncodingException;


  import junit.framework.TestCase;


  /**
  * 编码与解码测试
  * @author jzj
  */
  public class TestEncodeDecode extends TestCase {
  private char chineseChar = '中';
  private char englishChar = 'a';


  /**
  * Java程序中的字符都是占用二个字节,因为 char 类型好比双字节的无符号整数
  */
  public void testCharToUnicode() {
   //十进制Uncode编码
   System.out.println((int) chineseChar);//20013
   System.out.println((int) englishChar);//97


   //十六进制Uncode编码
   System.out
    .println(Integer.toHexString((int) chineseChar).toUpperCase());//4E2D
   System.out
    .println(Integer.toHexString((int) englishChar).toUpperCase());//61


   //二进制Uncode编码
   System.out.println(Integer.toBinaryString((int) chineseChar));//100111000101101
   System.out.println(Integer.toBinaryString((int) englishChar));//1100001
  }


  /**
  * 不管是中文还是英文都还是其他字符,每个字符都是占用两个字节,虽然英文字符的
  * UTF-16编码与Unicode编码是一样的,只不过UTF-16在编码时会在码流前加上"FE FF"两个字节的内容,
  * 表示字符是以UTF-16格式存储的,在读取时程序就会知道是UTF-16编码的字符
  */
  public void testCharToUTF16() {
   try {
   //--中文字符转UTF-16
   byte[] encodeArr = String.valueOf(chineseChar).getBytes("UTF-16");
   //十进制编码输出
   for (int i = 0; i < encodeArr.length; i++) {
    //-2 -1 78 45
    System.out.print(encodeArr[i] + " ");
   }
   System.out.println();
   //十六进制编码输出
   for (int i = 0; i < encodeArr.length; i++) {
    //FE FF 4E 2D
    System.out.print(byteToHex(encodeArr[i]) + " ");
   }
   System.out.println();
   //所占字节数
   System.out.println(encodeArr.length - 2);//2


   //--英文字符转UTF-16
   encodeArr = String.valueOf(englishChar).getBytes("UTF-16");
   //十进制编码输出
   for (int i = 0; i < encodeArr.length; i++) {
    //-2 -1 0 97
    System.out.print(encodeArr[i] + " ");
   }
   System.out.println();
   //十六进制编码输出
   for (int i = 0; i < encodeArr.length; i++) {
    //FE FF 00 61
    System.out.print(byteToHex(encodeArr[i]) + " ");
   }
   System.out.println();
   //所占字节数
   System.out.println(encodeArr.length - 2);//2


   } catch (UnsupportedEncodingException e) {
   e.printStackTrace();
   }
  }


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇java读取properties文件 下一篇用Java的加密机制来保护你的数据

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: