---------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
字符编码
1.字符流的出现是为了方便操作字符。2.更重要的是加入了编码转换。
3.通过子类转换流来完成。
3.1:InputStreamReader
3.2:OutputStreamWrirer
4.在两个对象进行构造的时候可以加入字符集。
一:编码表的由来
1.计算机只能识别二进制数据,早期由来是电信号。
2.为了方便应用计算机,让它可以识别各个国家的文字。
3.就将各个国家的文字用数字来表示,并一一对应,形成一张表,即编码表
二:常见的编码表
1.ASCII:美国标准信息交换码
用一个字节的7位可以表示
2.ISO8859-1:拉丁编码。欧洲编码表
用一个字节的8位表示
3.GB2312:中国的中文编码表
4.GBK:中国的中午编码表升级,融合了更多的中文文字符号,包括各个民族的
5.Unicode:国际标准码,融合了多种文字。
所有文字都用两个字节来表示,java语言使用的就是Unicode
6.UTF-8:最多用三个字节来表示一个字符
三:转换流的编码应用
1.可以将字符以指定的编码格式存储。
2.可以对文本数据指定编码格式来解读。
3.指定编码表的动作由构造函数来完成。
eg:
public static void readText() throws IOException
{
InputStreamReader isr=new InputStreamReader(new FileInputStream("utf.txt"),"UTF-8");
char[]buf=new char[10];
int len=isr.read(buf);
String str=new String(buf,0,len);
System.out.println(str);
isr.close();
}
public static void writeText() throws IOException
{
OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream ("utf.txt"),"UTF-8");
osw.write("你好");
osw.close();
}
// 如果文件出现乱码,说明编码和解码采用的编码标准不一致
四:编码解码
1.编码:字符串变为字符数组
解码:字符数组变为字符串
String-->byte[]; str.getBytes(charsetName);
byte[]-->String: new String(byte[] , dharsetName);
2.getBytes():使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组 中。
3.getBytes(String charsetName):使用指定的字符集将此 String 编码为 byte 序列,并将结果存储到一个 新的 byte 数组中。
eg:
public static void main(String[] args) throws IOException
{
String s="你好";
byte[] b1=s.getBytes("GBK");
System.out.println(Arrays.toString(b1));
String s1=new String(b1,"utf-8");
System.out.println("s1="+s1);
//对s1进行iso8859-1编码
byte[]b2=s1.getBytes("utf-8");
System.out.println(Arrays.toString(b2));
String s2=new String(b2,"gbk");
System.out.println("s2="+s2);
----------------------- android培训、java培训、java学习型技术博客、期待与您交流! ----------------------