本文目录一览:
1、Java中如何把GBK编码的字符串转成utf-8编码 2、java 怎么gbk转码utf-8 3、java中GBK编码格式转成UTF8,用一段方法实现怎么做 4、java怎么将gbk编码的文件转成utf-8编码
Java中如何把GBK编码的字符串转成utf-8编码
我先解释一下我对你的问题的理解: 你的问题有点笼统,可以这么理解两个意思: 一、你是想把一个GBK编码的字符串用UTF-8格式来编码。
String s = new String("全国".getBytes("GBK"), "GBK");
虽然这个时候的s是GBK编码的,但是s还是中文字符的。所以上面这种方式用:
new String(s.getBytes("GBK"), "UTF-8")
肯定是错的。应该用:
String s1 = new String(s.getBytes("UTF-8"), "UTF-8");
这样s1就是UTF-8编码的字符串了。 二、如果是遇见乱码问题。 比如:
String s = new String("全国".getBytes("GBK"), "GBK");
这样的s就是GBK编码的。现在你要把GBK格式的编码用UTF-8去编码,肯定就会出现乱码。
String s2 = new String(s.getBytes("GBK"), "UTF-8");
这个s2肯定是乱码的,而且这样就根本解不出来了。系统出现的乱码显示的时候才会出现编码错误。 所以一般出现乱码,只要把输入流换个编码解析一下就OK了。
java 怎么gbk转码utf-8
方法一: 思路:先转为Unicode,然后转为GBK。
String utf8 = new String(t.getBytes("UTF-8"));
System.out.println(utf8);
String unicode = new String(utf8.getBytes(), "UTF-8");
System.out.println(unicode);
String gbk = new String(unicode.getBytes("GBK"));
System.out.println(gbk);
方法二:
public static void main(String[] args) {
String str = "字符串编码转换";
try {
byte[] temp = str.getBytes("utf-8"); // 原编码方式
byte[] newtemp = new String(temp, "utf-8").getBytes("gbk"); // 转换后的编码方式
String newStr = new String(newtemp, "gbk"); // 转换后的编码方式
System.out.println(newStr);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
java中GBK编码格式转成UTF8,用一段方法实现怎么做
首先明确几点:
- Unicode是一种“编码”,所谓编码就是一个编号(数字)到字符的一种映射关系,可以理解成一个很大的对应表格。
- GBK、UTF-8是一种“编码格式”,是用来序列化或存储Unicode编码的数据的两种不同格式。
Java的String使用的编码是Unicode,但在内存中不需要“编码格式”。它只是一个Unicode的字符串而已。
所以Java里面String是不带编码格式的,而
String.toByteArray(charsetName)
得到的byteArray是带编码格式的。我们把toByteArray
的过程叫做“编码”;而new String(byte[], charsetName)
是把一个byte数组(带编码格式)以charsetName指定的编码格式翻译为一个不带编码格式的String对象,我们把这个过程叫“解码”。 根据提问者的意图,可能有以下两种情况: 第一种意图: 如何把一个被错误地当作是GBK格式存储的UTF-8格式的文件读出来的一段乱码字符串还原回去?
public static void main(String... args) throws Throwable {
String errStr = "errStr";
System.out.println(recover(errStr));
}
public static String recover(String str) throws Throwable {
return new String(str.getBytes("GBK"), "UTF-8");
}
其中errStr
就是乱码字符串,按照相反的顺序再编码(用GBK)、解码(用UTF-8)回去,就能得到正确的字符串。
第二种意图:
如何把一个GBK文件转化为UTF-8文件?
那就用InputStream
以GBK格式将文件读到内存里(表示为String),再将这个String以UTF-8编码写入目标文件里。
java怎么将gbk编码的文件转成utf-8编码
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.nio.charset.Charset;
public class gbk2utf8 {
public static void main(String[] args) throws InterruptedException, IOException {
gbk2utf8 tt = new gbk2utf8();
tt.copyAll("E:\\mine\\GitHub\\mytest\\myJar\\src", "E:/test");
}
public void copyAll(String dir, String des) throws IOException {
File parent = new File(dir);
System.err.println(parent.getAbsolutePath());
String[] allFile = parent.list();
for (String string : allFile) {
File file = new File(dir + "/" + string);
if (file.isFile()) {
this.copy(file, des);
} else {
File newDes = new File(des + "/" + string);
if (!newDes.exists()) newDes.mkdir();
this.copyAll(dir + "/" + string, des + "/" + string);
}
}
}
public void copy(File file, String des) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(file), Charset.forName("gbk")));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(des + "/" + file.getName()), Charset.forName("UTF-8")));
String lineTxt = null;
while ((lineTxt = br.readLine()) != null) {
bw.write(lineTxt);
bw.newLine();
}
bw.flush();
bw.close();
br.close();
}
}