Java中getBytes()的用法

[java]  view plain  copy
  1. package com.test.bs;  
  2.   
  3. /** 
  4.  *  
  5.  * 1、Unicode是一种编码规范,是为解决全球字符通用编码而设计的,而rUTF-8,UTF-16等是这种规范的一种实现。 
  6.  
  7.    2、java内部采用Unicode编码规范,也就是支持多语言的,具体采用的UTF-16编码方式。 
  8.  
  9.    3、不管程序过程中用到了gbk,iso8859-1等格式,在存储与传递的过程中实际传递的都是Unicode编码的数据,要想接收到的值不出现乱码,就要保证传过去的时候用的是A编码,接收的时候也用A编码来转换接收。 
  10.  
  11.    4、如果双方的file.encoding确保都相同,那就省事了,都默认转了,但往往在不同项目交互时很多时候是不一致的,这个时候是必须要进行编码转换的。 
  12.  
  13.    5、无论如论转换,java程序的数据都是要先和Unicode做转换,这样也就是能处理多语言字符集的原因了。底层保持了一致,只要在传值和接值的时候也一致就肯定不会出现乱码了。 
  14.  * */  
  15. public class UnicodeTest1 {  
  16.   
  17.     public static void main(String args[]) throws Exception {  
  18.   
  19.         String str = "中文字符";  
  20.   
  21.         System.out.println("original string---" + str);// 会正常输出原始串  
  22.   
  23.         /** 
  24.          *  
  25.          * str.getBytes();  如果括号中不写charset,则采用的是Sytem.getProperty("file.encoding"),即当前文件的编码方式, 
  26.          *  
  27.          * 很多人写的是系统的默认编码,通过代码测试并非如此,实际得到的是文件的编码方式* 
  28.          *  
  29.          * str.getBytes("charset");//指定charset,即将底层存储的Unicode码解析为charset编码格式的字节数组方式 
  30.          *  
  31.          * String new_str=new String(str.getBytes("utf-8"),"gbk")); 
  32.          *  
  33.          * //将已经解析出来的字节数据转化为gbk编码格式的字符串,在内存中即为gbk格式的字节数组转为Unicode去交互传递 
  34.          */  
  35.   
  36.         String new_str = new String(str.getBytes("utf-8"), "gbk");  
  37.   
  38.         /** 
  39.          *  
  40.          * 此时的输出是乱码,在UTF-8的file.encoding下输出gbk格式的数据肯定是乱码,但是new_str的确是gbk编码式的 
  41.          *  
  42.          * 此时的乱码源于encoding不符,但gbk格式的new_str本身数据并没有问题,通过下面的转换也可以看得出来 
  43.          */  
  44.   
  45.         System.out.println("new string----" + new_str);  
  46.   
  47.         String final_str = new String(new_str.getBytes("gbk"), "utf-8");// 此处的含意与最上边的注释是一致的参数含意  
  48.   
  49.         /** 
  50.          *  
  51.          *输出是正常的,此时将gbk编码格式的new_str字符串,用gbk这个charset去解析它,然后用utf-8再转码一次, 
  52.          *  
  53.          * 因为new_str确实是gbk格式的,才能经过utf-8编码得到正常的数据显示。 
  54.          */  
  55.   
  56.         System.out.println("final string---" + final_str);  
  57.   
  58.     }  
  59.   
  60. }  


 

 

[java]  view plain  copy
  1. package com.test.bs;  
  2.   
  3. import java.io.UnsupportedEncodingException;  
  4.   
  5. public class UnicodeTest2 {  
  6.   
  7.     public static void main(String[] args) {  
  8.         String a = "哈哈";  
  9.         try {  
  10.             byte[] gb2312 = a.getBytes("GB2312");  
  11.             byte[] utf = a.getBytes("UTF-8");  
  12.             for (int i = 0; i < gb2312.length; i++) {  
  13.                 System.out.print(gb2312[i]);  
  14.             }  
  15.             System.out.println();  
  16.   
  17.             for (int i = 0; i < utf.length; i++) {  
  18.                 System.out.print(utf[i]);  
  19.             }  
  20.             System.out.println();  
  21.   
  22.             System.out.println(new String(gb2312));  
  23.             System.out.println(new String(utf));  
  24.             System.out.println(System.getProperty("file.encoding"));//当前文件的编码方式  
  25.             System.out.println(new String(utf, "UTF-8"));  
  26.             System.out.println(new String(gb2312, "UTF-8"));  
  27.         } catch (UnsupportedEncodingException e) {  
  28.             e.printStackTrace();  
  29.         }  
  30.   
  31.     }  
  32. }  

你可能感兴趣的:(Java中getBytes()的用法)