posts - 247,  comments - 25,  trackbacks - 0

本例举例三种常用的字符编码”GBK"  "UTF-8"  "UTF-16LE"
我们发现,在使用String.getBytes这个方法时,
若字符编码参数使用”GBK“
则遇字母占一个字节,遇中文占两个字节
若字符编码参数使用”UTF-8“
则遇字母占一个字节,遇中文占三个字节
若字符编码参数使用”UTF-16LE“
则无论字母或中文均占两个字节

反之使用new String根据byte数组构造字符串对象时,需要根据byte[]数组所使用的字符编码进行相应转化
否则容易出现乱码,


package com.genius.demo;

import java.io.UnsupportedEncodingException;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

public class StringConvertDemoActivity extends Activity {
    /** Called when the activity is first created. */
 
 
 
 private TextView textview1;
 private TextView textview2;
 private TextView textview3;
 private TextView textview4;
 
 
 

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        init();
       
        print();
    }
   
    void init()
    {
     textview1 = (TextView) findViewById(R.id.print1);
     textview2 = (TextView) findViewById(R.id.print2);
     textview3 = (TextView) findViewById(R.id.print3);
     textview4 = (TextView) findViewById(R.id.print4);
    }
   
    void print()
    {
     String str1 = "eoe"; 
     byte[]s1d1 = null;
     byte[]s1d2 = null;
     byte[]s1d3 = null;
     try {
   s1d1 = str1.getBytes("GBK");
   s1d2 = str1.getBytes("UTF-8");
      s1d3 = str1.getBytes("UTF-16LE");  
      
      String print1 = str1 + " getbytes(gbk) size = " + s1d1.length + "\n" +
   str1 + " getbytes(UTF-8) size = " + s1d2.length + "\n" +
   str1 + " getbytes(UTF-16LE) size = " + s1d3.length + "\n";  

      textview1.setText(print1);
      
  } catch (UnsupportedEncodingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
     
  
  
  
  
  
  String str2 = "社区";
  byte[]s2d1 = null;
     byte[]s2d2 = null;
     byte[]s2d3 = null;
     try {
      s2d1 = str2.getBytes("GBK");
      s2d2 = str2.getBytes("UTF-8");
      s2d3 = str2.getBytes("UTF-16LE");
      
      String print2 = str2 + " getbytes(gbk) size = " + s2d1.length + "\n" +
   str2 + " getbytes(UTF-8) size = " + s2d2.length + "\n" +
   str2 + " getbytes(UTF-16LE) size = " + s2d3.length + "\n";

      textview2.setText(print2);
  } catch (UnsupportedEncodingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
      
  
  
  
  
  
  
  
  String str3 = "eoe社区";
  byte[]s3d1 = null;
     byte[]s3d2 = null;
     byte[]s3d3 = null;
     try {
      s3d1 = str3.getBytes("GBK");
      s3d2 = str3.getBytes("UTF-8");
      s3d3 = str3.getBytes("UTF-16LE");
      
      String print3 = str3 + " getbytes(gbk) size = " + s3d1.length + "\n" +
   str3 + " getbytes(UTF-8) size = " + s3d2.length + "\n" +
   str3 + " getbytes(UTF-16LE) size = " + s3d3.length + "\n";

      textview3.setText(print3); 
  } catch (UnsupportedEncodingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   return ;
  }
 
   
  
  
  
  
  
  try {
   String new1 = new String(str3.getBytes("GBK"), "GBK");
   String new2 = new String(str3.getBytes("GBK"), "UTF-8");
   String new3 = new String(str3.getBytes("GBK"), "UTF-16LE");
   
   String print4 = "new string(" + str3 + ".getbytes('gbk')), 'gbk') = " + new1 + "\n" +
       "new string(" + str3 + ".getbytes('gbk')), 'utf-8') = " + new2 + "\n" +
       "new string(" + str3 + ".getbytes('gbk')), 'utf-16le') = " + new3 + "\n";
   
   textview4.setText(print4); 
  } catch (UnsupportedEncodingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   return ;
  }
  
  
  
  
  
  
    }
   
   
   
   
   
   
}

posted on 2011-10-12 14:08 林的 阅读(3222) 评论(0)  编辑  收藏 所属分类: android

只有注册用户登录后才能发表评论。


网站导航:
 
<2011年10月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

想回家了,呵呵!

常用链接

留言簿(6)

随笔分类

随笔档案

文章分类

文章档案

相册

收藏夹

搜索

  •  

最新评论

阅读排行榜

评论排行榜