javagbk乱码转换,java中文乱码转换

发布时间:2022-11-23

本文目录一览:

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();
    }
}