本文目录一览:
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()
方法有两种形式:
getBytes(String charsetName)
:使用指定的字符集将字符串编码为 byte 序列,并将结果存储到一个新的 byte 数组中。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 的个数表示字符编码所需的字节数。