通过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 数组中。
参考资料:
百度百科-getBytes()
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的个数表示字符编码所需的字节数。
Unicode转换为UTF-8时,可以将Unicode二进制从低位往高位取出二进制数字,每次取6位,如上述的二进制就可以分别取出为如下示例所示的格式,前面按格式填补,不足8位用0填补。
参考资料来源:百度百科:UTF-8
从字节流
转换为String
(Unicode),字节流可以是GB系列、UTF-8等多种编码:
ResultSet
rs
bytep[]
bytes
=
rs.getBytes()
String
str
=
new
String(bytes,
"
gb2312
")