java GBK字符转换成为UTF-8编码字符
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 GBK字符转换成为UTF-8编码字符的更多相关文章
- java 字节→字符转换流
OutputStreamWriter:把字节输出流对象转成字符输出流对象 InputStreamReader:把字节输入流对象转成字符输入流对象 FileWriter和FileReader分别是Out ...
- JAVA IO分析一:File类、字节流、字符流、字节字符转换流
因为工作事宜,又有一段时间没有写博客了,趁着今天不是很忙开始IO之路:IO往往是我们忽略但是却又非常重要的部分,在这个讲究人机交互体验的年代,IO问题渐渐成了核心问题. 一.File类 在讲解File ...
- is 和 == 的区别,utf和gbk的转换,join用法
is 和 == 的区别 # is 比较的是内存地址 # == 比较的是值 a = 'alex' b = 'alex' #int,str(小数据池)会被缓存,为了节约内存 print(id(a),id( ...
- Java第三十三天,IO操作(续集),字符转换流
计算机都是以二进制码格式存储文件的,但是在读写文件的过程中,每个应用程序都有自己的编码格式.FileWrite和FileRead类是通过查询系统默认码表进行读写的,因此在自己的系统上能够实现编码的智能 ...
- Java Io 字符流
Java Io 字符流包含: 1. InputStreamReader 它是由byte流解析为char流,并且按照给定的编码解析. 2. OutputStreamWrite 它是char流到byt ...
- 解决GBK字符转UTF-8乱码问题
通过以下方法将GBK字符转成UTF-8编码格式的byte[]数组 package test; import java.io.UnsupportedEncodingException; public c ...
- 完整的java字符串编码转换代码
package book.String; import java.io.UnsupportedEncodingException; /** *//** * 转换字符串的编码 * @author joe ...
- JAVA字符串编码转换常用类
无论是对程序的本地化还是国际化,都会涉及到字符编码的转换的问题.尤其在web应用中常常需要处理中文字符,这时就需要进行字符串的编码转换,将字符串编码转换为GBK或者GB2312.一.关键技术点: ...
- idea Error:(1, 10) java: 需要class, interface或enum, 未结束的字符串文字,Error:(55, 136) java: 非法字符: \65533
1.未结束的字符串文字,Error:(55, 136) java: 非法字符: \65533 这些乱七吧八遭的错误如果很多的话 , 尝试 重新修改下生成目录 修改下语言等级 上述方法都不行 ,还报错 ...
随机推荐
- cxf webservice异步调用
http://blog.csdn.net/changpingchen/article/details/9048347 http://www.oschina.net/question/780719_12 ...
- SQL批量信息保存(XML格式字符串数据)
/* *功能:SQL批量信息录入 *此存储过程获取表单信息,插入表中.*/CREATE PROC [dbo].[sp_SaveToMX1]@XML text --明细表XML字符串信息ASBEG ...
- iOS8中添加的extensions总结(一)——今日扩展
通知栏中的今日扩展 分享扩展 Action扩展 图片编辑扩展 文件管理扩展 第三方键盘扩展 注:此教程来源于http://www.raywenderlich.com的<iOS8 by Tutor ...
- Swift - 07 - 布尔类型
//: Playground - noun: a place where people can play import UIKit var str = "Hello, playground& ...
- poj3620
#include<iostream>#include<string>#include<stack>#include<vector>#include< ...
- oracle触发器应用
首先给大家推荐两篇我看后的博文,我已经内容转载过来: 1.对触发器的讲解 本篇主要内容如下: 8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建 ...
- Android 多线程:使用Thread和Handler
当一个程序第一次启动时,Android会同时启动一个对应的主线程(Main Thread),主线程主要负责处理与UI相关的事件,如:用户的按键事件,用户接触屏幕的事件以及屏幕绘图事件,并把相关的事件分 ...
- 鼠标划过图片title 提示实现
鼠标划过图片title 提示实现 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h ...
- jquery 与其他库冲突解决方案
var j = jQuery.noConflict(); j("div p").hide(); // 基于 jQuery 的代码 $("content").st ...
- struts2.xml的配置与技巧
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-/ ...