黑马程序员--编码(重点,不可不知。)

来源:互联网 发布:java继承作用 编辑:程序博客网 时间:2024/05/17 08:27

----------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

Encode编码。

编码:字符串变成字节数组。

解码:字节数组变成字符串。

String-->byte[];  str.getBytes(charsetName);
byte[] -->String: new String(byte[],charsetName);

结论。解码先用ios8859-1,再用gbk,最后用utf-8。
因为用utf-8去解码。如果解错了数据就无法还原了。
编码的话。如果有英文有汉字。汉字多就用GBK英文多就用utf-8。
如果全是英文就用iso8859-1。

import java.util.*;class  EncodeDemo{public static void main(String[] args)throws Exception {encode();encode2();encode3();}public static void encode()throws Exception{String s = "你好";//用utf-8解码错误byte[] b1 = s.getBytes("GBK");//这里会产生异常。System.out.println(Arrays.toString(b1));String s1 = new String(b1,"utf-8");//这里会产生异常。System.out.println("s1="+s1);//重新编码,再用gbk解码。byte[] b2 = s1.getBytes("utf-8");System.out.println(Arrays.toString(b2));String s2 = new String(b2,"gbk");System.out.println("s2="+s2);}public static void encode2()throws Exception{String s = "你好";//用iso8859-1解码错误byte[] b1 = s.getBytes("GBK");//这里会产生异常。System.out.println(Arrays.toString(b1));String s1 = new String(b1,"iso8859-1");//这里会产生异常。System.out.println("s1="+s1);//重新编码,再用gbk解码。byte[] b2 = s1.getBytes("iso8859-1");System.out.println(Arrays.toString(b2));String s2 = new String(b2,"gbk");System.out.println("s2="+s2);}public static void encode3()throws Exception{String s = "你好";//用gbk解码错误byte[] b1 = s.getBytes("utf-8");//这里会产生异常。System.out.println(Arrays.toString(b1));String s1 = new String(b1,"gbk");//这里会产生异常。System.out.println("s1="+s1);//重新编码,再用utf-8解码。byte[] b2 = s1.getBytes("gbk");System.out.println(Arrays.toString(b2));String s2 = new String(b2,"utf-8");System.out.println("s2="+s2);}}



----------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

0 0
原创粉丝点击