黑马程序员——JAVA基础之编码表

------- android培训java培训、期待与您交流! ---------

字符编码



字符流的出现为了方便操作字符。



更重要是的加入了编码转换。



通过子类转换流来完成。

•  InputStreamReader

•  OutputStreamWriter



在两个对象进行构造的时候可以加入字符集。

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter; class EncodeStream
{
public static void main(String[] args) throws IOException
{
writeText();
readText();
} public static void readText()throws IOException
{
InputStreamReader isr = new InputStreamReader(new FileInputStream("utf.txt"),"gbk"); 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();
} }

编码表的由来



计算机只能识别二进制数据,早期由来是电信号。



为了方便应用计算机,让它可以识别各个国家的文字。



就将各个国家的文字用数字来表示,并一一对应,形成一张表。



这就是编码表。

常见的编码表



ASCII:美国标准信息交换码。•  用一个字节的7位可以表示。



ISO8859-1:拉丁码表。欧洲码表•  用一个字节的8位表示。



GB2312:中国的中文编码表。



GBK:中国的中文编码表升级,融合了更多的中文文字符号。



Unicode:国际标准码,融合了多种文字。•  所有文字都用两个字节来表示,Java语言使用的就是unicode



UTF-8:最多用三个字节来表示一个字符。



......

转换流的编码应用



可以将字符以指定编码格式存储。



可以对文本数据指定编码格式来解读。



指定编码表的动作由构造函数完成。

字符编码



编码:字符串---->字节数组   String-->byte[];  str.getBytes(charsetName);



解码:字节数组---->字符串   byte[] -->String: new String(byte[],charsetName);

import java.util.Arrays;

class  EncodeDemo
{
public static void main(String[] args)throws Exception
{
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); }
}
class EncodeDemo2
{
public static void main(String[] args) throws Exception
{
String s = "联通"; byte[] by = s.getBytes("gbk"); for(byte b : by)
{
System.out.println(Integer.toBinaryString(b&255));
} System.out.println("Hello World!");
}
}

------- android培训java培训、期待与您交流! ---------

上一篇:python3+django2 开发易语言网络验证(下)


下一篇:vs 2017 community中文版下载地址