html:标签已经定义,数据和表示混合在一起
xml:自己定义标签,只是表示数据,关于如何显示没有定义。
DTD:文档类型定义,来规范XML文档。
java 序列化技术
编码
编码的原因:
计算机中存储信息的最小单元是一个字节,即8个bit,所以能表示的字符范围是0-255
人类要表示的字符太多,无法用一个字节来完全表示
要解决这个矛盾,必须要用一个新的数据结构char,从cha到byte必须编码
常用的编码方式:ASCII、ISO-8859-1、GB2312、GBK、UTF-8、UTF-16
Unicode(Universal Code 统一编码)
UTF-16:用两个字节表示一个字符,java以UTF-16作为内存的字符存储格式。
InputeStreamReader类就是关联字节到字符的桥梁,它负责在I/O过程中处理读取字节到字符的转换,而具体字节到字符的解码实现它又委托StreamDecoder去做,在StreamDecoder解码过程中必须由用户指定Charset编码格式。如果没有指定Charset,将使用本地环境的默认字符集。
字符流和字节流之间的相互转化
整个IO包实际上分为字节流和字符流,但是除了这两个流之外,还存在一组字节流-字符流的转换类。
OutputStreamWriter:是Writer的子类,将输出的字符流变为字节流,即将一个字符流的输出对象变为字节流输出对象。
InputStreamReader:是Reader的子类,将输入的字节流变为字符流,即将一个字节流的输入对象变为字符流的输入对象。
如果以文件操作为例,则内存中的字符数据需要通过OutputStreamWriter变为字节流才能保存在文件中,读取时需要将读入的字节流通过InputStreamReader变为字符流。过程如下:
写入数据-->内存中的字符数据-->字符流-->OutputStreamWriter-->字节流-->网络传输(或文件保存) 读取数据<--内存中的字符数据<--字符流<--InputStreamReader<--字节流<--网络传输(或文件保存)
可以清楚地发现,不管如何操作,最终全部是以字节的形式保存在文件中或者进行网络传输。
OutputStreamWriter writer = new OutputStreamWriter ( outputStream , charset ) ;//字符流转化为字节流
String s = "这是要保存的中文字符" ;
writer . write ( s ) ;
writer . close () ;//必须close
FileInputStream inputStream = new FileInputStream ( file ) ;
InputStreamReader reader = new InputStreamReader ( inputStream ) ;//字节流转化为字符流
内存操作中的编码
String 提供了将字节和字符相互转化的函数
String s=“这是一段中文字符串”;
byte[] b=s.getBytes(“UTF-8”);
String n=new String(b,”UTF-8)"
前后编码要一致
javac 编译原理
javac 任务就是将java语言规范转化成java虚拟机语言规范,完成翻译工作。
Servlet 详解
xml:自己定义标签,只是表示数据,关于如何显示没有定义。
DTD:文档类型定义,来规范XML文档。
java 序列化技术
编码
编码的原因:
计算机中存储信息的最小单元是一个字节,即8个bit,所以能表示的字符范围是0-255
人类要表示的字符太多,无法用一个字节来完全表示
要解决这个矛盾,必须要用一个新的数据结构char,从cha到byte必须编码
常用的编码方式:ASCII、ISO-8859-1、GB2312、GBK、UTF-8、UTF-16
Unicode(Universal Code 统一编码)
UTF-16:用两个字节表示一个字符,java以UTF-16作为内存的字符存储格式。
InputeStreamReader类就是关联字节到字符的桥梁,它负责在I/O过程中处理读取字节到字符的转换,而具体字节到字符的解码实现它又委托StreamDecoder去做,在StreamDecoder解码过程中必须由用户指定Charset编码格式。如果没有指定Charset,将使用本地环境的默认字符集。
字符流和字节流之间的相互转化
整个IO包实际上分为字节流和字符流,但是除了这两个流之外,还存在一组字节流-字符流的转换类。
OutputStreamWriter:是Writer的子类,将输出的字符流变为字节流,即将一个字符流的输出对象变为字节流输出对象。
InputStreamReader:是Reader的子类,将输入的字节流变为字符流,即将一个字节流的输入对象变为字符流的输入对象。
如果以文件操作为例,则内存中的字符数据需要通过OutputStreamWriter变为字节流才能保存在文件中,读取时需要将读入的字节流通过InputStreamReader变为字符流。过程如下:
写入数据-->内存中的字符数据-->字符流-->OutputStreamWriter-->字节流-->网络传输(或文件保存) 读取数据<--内存中的字符数据<--字符流<--InputStreamReader<--字节流<--网络传输(或文件保存)
可以清楚地发现,不管如何操作,最终全部是以字节的形式保存在文件中或者进行网络传输。
public class encode { @SuppressWarnings("resource") public static void main(String[] args) throws Exception {
String file = "stream"; String charset = "UTF-8";
FileOutputStream outputStream = new FileOutputStream ( file ) ;OutputStreamWriter writer = new OutputStreamWriter ( outputStream , charset ) ;//字符流转化为字节流
String s = "这是要保存的中文字符" ;
writer . write ( s ) ;
writer . close () ;//必须close
FileInputStream inputStream = new FileInputStream ( file ) ;
InputStreamReader reader = new InputStreamReader ( inputStream ) ;//字节流转化为字符流
StringBuffer buffer = new StringBuffer();
char[] buf = new char[64];
int count = 0;
while ((count = reader.read(buf)) != -1) {
buffer.append(buf, 0, count); }
reader.close();
System.out.println(buffer.toString()); }
}内存操作中的编码
String 提供了将字节和字符相互转化的函数
String s=“这是一段中文字符串”;
byte[] b=s.getBytes(“UTF-8”);
String n=new String(b,”UTF-8)"
前后编码要一致
javac 编译原理
javac 任务就是将java语言规范转化成java虚拟机语言规范,完成翻译工作。
Servlet 详解