------- android培训、java培训、期待与您交流! ----------
字符编码
1.字符流的出现为了方便操作字符
2.更重要的是加入了编码的转换
3.通过子类转换流来完成
InputStreamReader OutputStremWriter
4.在两个对象进行构造的时候,可以加入字符集
-->GBK:2个字节表示一个字符,识别中文
UTF-8:3个字节表示一个字符,识别中文
Iso8859-1:不识别中文的编码表
编码:byte[] b=s.getBytes("gbk");字符串--->字节数组
解码:String s1=new String(b,"iso8859-1");字节数组--->字符串
Arrays.toString():返回指定数组内容的字符串表现形式
补充的知识点:
服务器默认的编码是ISO8859-1
当编码用GBK,解码用ISO8859-1,会失败;这时用ISO8859-1解码,再用GBK编码;但是当GBK和UTF-8用混时,不能再反编,因为GBK和UTF-8都是有识别中文的功能,会出现乱码。
importjava.util.*;
练习1:
用不同的编码表编码“你好”
class EncodeDemo
{
public static void main(String[]args)throws Exception
{
Strings="你好";
byte[]b=s.getBytes("gbk");//编码
System.out.println(Arrays.toString(b));
Strings1=new String(b,"iso8859-1");//解码
System.out.println("s1="+s1);
//对iso8859-1编码
byte[]b1=s1.getBytes("iso8859-1");
System.out.println(Arrays.toString(b1));
Strings2=new String(b1);
System.out.println("s2:"+s2);
}
}
练习2:
编码和解码用不同的编码表
import java.io.*;
class EncodeStream
{
public static void main(String[]args)throws IOException
{
readTest();
}
public static void readTest()throwsIOException
{
InputStreamReader isr=
new InputStreamReader(newFileInputStream("utf.txt"),"gbk");
char[]c=new char[10];
intlen=isr.read(c);
Strings=new String(c,0,len);
System.out.println(s);
isr.close();
}
public static void writeTest()throwsIOException
{
OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("utf.txt"),"utf-8");
osw.write("你好");
osw.close();
}
}
特殊:当联通编码时,出现的二进制正好符合utf-8编码表。
------- android培训、java培训、期待与您交流! ----------