gbk文件转utf-8 Demo

读取gbk编码的文件,并将其转为utf-8编码后输出:

import java.io.File;
import java.io.RandomAccessFile;
import java.io.UnsupportedEncodingException;


public class Test1 {
public static String readTxt(int off,int leng) {
RandomAccessFile r;
String str = "";
try {
r = new RandomAccessFile(new File("D:/test.txt"), "r");
byte[] c = new byte[leng];
r.seek(off);
r.read(c);
str = new String(c);
} catch (Exception e) {
e.printStackTrace();
}
return str;
}

public static byte[] gbk2utf8(String chenese){
char c[] = chenese.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];

}
return fullByte;
}

public static void main(String[] args) {
String str = readTxt(0,731);

byte [] fullByte = gbk2utf8(str);
String fullStr = "";
try {
fullStr = new String(fullByte, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
System.out.println(fullStr);
}
}

测试文档D:\test.txt内容:
[账号],[日期],[收支种类],[币种],[收入],[支出],[余额],[摘要]

3819660311,2004-2006-01-05,支出,人民币,0,54.20, 6403.89,消费款


中文可以,正确转换
英文乱码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值