汉字与英文的互相转换
下面的两个方法用来解决乱码问题非常有用.
?
将包含汉字的字符串转换成英文:
/** * 将中英文字串转换成纯英文字串 * @param str * @return */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(); }?将转换后的字符串还原:
/** * 将经转换的字串还原 * @param str * @return */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; }?注意:上例在实际编程中效果很好,只是存储的中文信息需要经过同样处理,才能被其他系统使用。而且如果中文字串出现英文字符,实际上增加了额外的存储空间。