import java.util.HashMap;
import java.util.Map;
/**
* 创建日期: 2014-04-18 10:36:25
* 作者: 黄飞
* mail:huangfei8087@163.com 834865081@qq.com
* ©版权归作者全部
* */
public class ConverFromGBKToUTF8 {
public static void main(String[] args) {
try {
ConverFromGBKToUTF8 convert = new ConverFromGBKToUTF8();
String fullStr = convert.gbk2utf8("半角变拳脚,quanjiao "); System.out.println( fullStr ) ;
} catch (Exception e) {
e.printStackTrace();
}
} private StringUtil chinese(String chinese){
StringUtil util = new StringUtil();
char[]chars = chinese.toCharArray() ;
int index = 0 ;
StringBuffer buffer = new StringBuffer();
for(char c : chars){
String temp = String.valueOf(c) ;
if(temp.getBytes().length == 1){
util.map.put( index , temp ) ;
}else{
buffer.append( temp );
}
index++;
}
util.chinese = buffer.toString() ;
return util ;
} public String gbk2utf8(String chenese) {
StringUtil strUtil = chinese( chenese ) ;
char c[] = strUtil.chinese.toCharArray( ) ;
byte[] fullByte = new byte[3 * c.length];
for (int i = 0; i < c.length; i++) {
int m = (int) c[i];
String word = Integer.toBinaryString(m); StringBuffer sb = new StringBuffer();
int len = 16 - word.length();
for (int j = 0; j < len; j++) {
sb.append("0");
}
sb.append(word);
sb.insert(0, "1110");
sb.insert(8, "10");
sb.insert(16, "10"); String s1 = sb.substring(0, 8);
String s2 = sb.substring(8, 16);
String s3 = sb.substring(16); byte b0 = Integer.valueOf(s1, 2).byteValue();
byte b1 = Integer.valueOf(s2, 2).byteValue();
byte b2 = Integer.valueOf(s3, 2).byteValue();
byte[] bf = new byte[3];
bf[0] = b0;
fullByte[i * 3] = bf[0];
bf[1] = b1;
fullByte[i * 3 + 1] = bf[1];
bf[2] = b2;
fullByte[i * 3 + 2] = bf[2];
}
String reutrnStr = null ;
try {
reutrnStr = new String(fullByte, "UTF-8");
} catch (Exception e) {
}
StringBuffer returnBuffer = new StringBuffer( reutrnStr );
for(Map.Entry<Integer, String> entry : strUtil.map.entrySet()){
returnBuffer.insert(entry.getKey() , entry.getValue() ) ;
} return returnBuffer.toString() ;
}
} class StringUtil{
public String chinese ; public Map<Integer , String> map = new HashMap<Integer, String>();
}

最新文章

  1. HDU 4005 The war Tarjan+dp
  2. Bootstrap3.0学习第二十六轮(JavaScript插件——图片轮播)
  3. Centos6.5更新e1000网卡驱动
  4. HttpWebResponse返回信息
  5. Ubuntu安装文泉驿-微米黑字体
  6. CLR 读书笔记
  7. 根据用户的ID查用户的名字
  8. Content://sms
  9. 微信小程序 网络请求之re.request 和那些坑
  10. 认识J2SE
  11. iOS隐藏导航栏底部灰线
  12. jquery中this和event.target的区别
  13. 24.C# Lambda表达式
  14. PHP多进程引发的msyql连接数问题
  15. trunk端口配置错误导致环路
  16. 【笔记】css基于box的一行时垂直方向居中,多行平均居中,多出部分还省略号代替
  17. 在linux系统上文件传输的小技巧
  18. Spring集合注入
  19. 编写一个BAT脚本协助运维人员遇到问题时候调测数据库是否有效连接成功的操作攻略
  20. 矩阵的SVD分解

热门文章

  1. 在Cognos报表中使用钻取特性,参数传递
  2. A simple stack
  3. mysql的limit经典用法及优化
  4. gdb调试memcached
  5. Reflow、Repaint 性能优化
  6. 『Python』Python 调用 ZoomEye API 批量获取目标网站IP
  7. 转:nginx防DDOS攻击的简单配置
  8. N个元素的集合划分成互斥的两个子集的数目
  9. select m objects from n objects randomly
  10. javascript book