[转]Java采用Unicode码编码方式,中英文字符均采用16bit存储。既然存储英文信息是正确的,根据一定规则,将中文信息转换成英文信息后存储,自然不会出现截尾现象。读取信息时再进行逆向操作,将英文信息还原成中文信息即可。由GB2312编码规则可知,汉字一般为二个高位为1的ASCII码,在转换时将一个汉字的二个高位1去掉,还原时再将二个高位1加上。为了处理含有英文字符的中文字串,对英文字符则需要加上一个Byte 0标记。
  以下提供的两个公用静态方法,可加入任何一个类中使用。
  将中英文字串转换成纯英文字串
  public static String toTureAsciiStr(String str){
  StringBuffer sb = new StringBuffer();
  byte[] bt = str.getBytes();
  for(int i =0 ;i〈bt.length;i++){
  if(bt[i]〈0){
  //是汉字去高位1
  sb.append((char)(bt[i]&&0x7f));
   }else{//是英文字符 补0作记录
  sb.append((char)0);
  sb.append((char)bt[i]);
   }
   }
  return sb.toString();
  }
  将经转换的字串还原
  public static String unToTrueAsciiStr(String str){
   byte[] bt = str.getBytes();
   int i,l=0,length = bt.length,j=0;
   for(i = 0;i〈length;i++){
   if(bt[i] == 0){
   l++;
   }
   }
   byte []bt2 = new byte[length-l];
   for(i =0 ;i〈length;i++){
   if(bt[i] == 0){
   i++;
   bt2[j] = bt[i];
   }
   else{
   bt2[j] = (byte)(bt[i]|0x80);
   }
   j++;
   }
  String tt = new String(bt2);
  return tt;
  }