java GBK字符转换成为UTF-8编码字符
2023-09-14 09:07:56 时间
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>(); }
相关文章
- Java多线程详解_java支持多线程
- java转换字符串为时间_JAVA字符串转日期或日期转字符串
- Java进阶(二十三)java中long类型转换为int类型
- java用什么软件_Java编程什么软件最好用?
- Java连接MySQL mysql-connector-java-bin.jar驱动包的下载与安装
- 【说站】java中for语句是什么意思?
- 转换流实现了字节流和字符流之间的互相转换_java输出流输出文件
- java executeupdate_Java自学-JDBC execute与executeUpdate的区别
- java字符串转换为json对象6_Json对象与Json字符串的转化、JSON字符串与Java对象的转换…
- N皇后问题_Java递归解决N皇后问题
- java查找字符的方法_Java字符串查找(3种方法)
- Java中BigDecimal用法详解
- Java 环境下用 PDFBox 实现 PDF 文档转换 JPG 图片的功能
- java中全角半角字符的相互转换详解编程语言
- Java 经典实例: Unicode字符和String之间的转换详解编程语言
- MySQL数据库开发实践:用 Java 开发中文应用(mysql中文java)
- 深入浅出Java配置MySQL数据库(java配置mysql)
- Linux下搭建 Java 开发环境(linux搭建java环境)
- 使用Java去连接MySQL数据库(java jdbc mysql)
- Java搭配MySQL,实现创新跳跃的可能(java 与mysql)
- 封装了一个Java数据库访问管理类
- java中字符串与日期的转换实例
- java中url汉字编码互相转换实例
- java实现策略模式使用示例
- Java中String类(字符串操作)的10个常见问题和解决方法