java转码,java转码方法

发布时间:2023-01-08

本文目录一览:

  1. java怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串
  2. java文件读取内容转码
  3. java如何把string转为utf-8

java怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串

通过JDK1.6知道String类中getBytes("编码")方法可以将一个字符串用指定的编码转成一个字节数组,String中通过指定的 charset 解码指定的 byte 数组,构造一个新的 String。代码如下:

try {
    String s = "java学习";
    System.out.println(s);
    String result = new String(s.getBytes("GB2312"), "iso-8859-1");
    System.out.println(s);
} catch (UnsupportedEncodingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

扩展资料:

getBytes() 方法有两种形式:

  1. getBytes(String charsetName):使用指定的字符集将字符串编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
  2. getBytes():使用平台的默认字符集将字符串编码为 byte 序列,并将结果存储到一个新的 byte 数组中。

参考资料:

java文件读取内容转码

读取的文件流如果是 read() 方法(读取字节流的时候,中文就会是乱码),所以现在通常都是通过 readLine() 方式进行读取。举例: 可以通过 BufferedReader 流的形式进行流缓存,之后通过 readLine() 方法获取到缓存的内容。

BufferedReader bre = null;
try {
    String file = "D:/test/test.txt";
    bre = new BufferedReader(new FileReader(file)); // 此时获取到的bre就是整个文件的缓存流
    String str;
    while ((str = bre.readLine()) != null) { // 判断最后一行不存在,为空结束循环
        System.out.println(str); // 原样输出读到的内容
    }
    bre.close(); // 关闭流,否则bre流会一直存在,直到程序运行结束
} catch (IOException e) {
    e.printStackTrace();
}

除此之外,Java 文件读取的时候如果有中文,就可能出现乱码,通常获取到的文件编码是 "iso8859-1" 格式,需要转换为 "UTF-8" 格式。 例如:

String str = new String(str.getBytes("iso8859-1"), "UTF-8");

进行强制转换后在进行读取即可。

备注:通常格式有 GBK、UTF-8、iso8859-1、GB2312,如果上面的强制转换不成功,依次进行这些格式的尝试,肯定是可以解决问题的。

java如何把string转为utf-8

Java 不同编码之间进行转换,都需要使用 Unicode 作为中转。

String str = "任意字符串";
str = new String(str.getBytes("gbk"), "utf-8");

备注说明:

  • str.getBytes("UTF-8"):意思是以 UTF-8 的编码取得字节。
  • new String(XXX, "UTF-8"):意思是以 UTF-8 的编码生成字符串。

举例:

public static String getUTF8XMLString(String xml) {
    // A StringBuffer Object
    StringBuffer sb = new StringBuffer();
    sb.append(xml);
    String xmString = "";
    String xmlUTF8 = "";
    try {
        xmString = new String(sb.toString().getBytes("UTF-8"));
        xmlUTF8 = URLEncoder.encode(xmString, "UTF-8");
        System.out.println("utf-8 编码:" + xmlUTF8);
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    // return to String Formed
    return xmlUTF8;
}

扩展资料: UTF-8编码规则

  • 如果只有一个字节则其最高二进制位为 0;
  • 如果是多字节,其第一个字节从最高位开始,连续的二进制位值为 1 的个数决定了其编码的字节数,其余各字节均以 10 开头。
  • 实际表示 ASCII 字符的 Unicode 字符,将会编码成 1 个字节,并且 UTF-8 表示与 ASCII 字符表示是一样的。所有其他的 Unicode 字符转化成 UTF-8 将需要至少 2 个字节。
  • 每个字节由一个换码序列开始。第一个字节由唯一的换码序列,由 n 位连续的 1 加一位 0 组成,首字节连续的 1 的个数表示字符编码所需的字节数。

参考资料来源: