1.编码简介:
计算机中存放的文字,最终都是由二进制表示的。而我们能够通过“记事本”,“eclipse”等文本编辑工具打开文件,看到文字。都是由于这些工具将二进制文件,参考对应码表解码后显示的。
编码:就是应用程序将文字(字符串)通过码表翻译为二进制。
解码:就是应用程序将二进制文件通过码表翻译为文字(字符串)。
2.编码分类:
GBK:两个字节表示一个字符,每个汉字编码后的字节都是1开头。简体中文windows操作系统,系统默认编码即为GBK编码。
unicode:每个字符都用两个字节表示。java内存中字符,字符串的所用的编码即为unicode编码
(可以将char转换为int类型,查看其二进制——此即为unicode编码。这与将字符通过unicode方式存入文件所得二进制相同)。
utf-8:汉字一般用3个字节表示,还有2个,1个字节表示字符。
ASCII:美国制定,1个字节标示字符,第一bit位为0。(不包括汉字)
ISO8895-1:欧洲制定,1个字节标示字符,第一bit位为1.(不包括汉字)
3.java读写文件涉及编码流程:
以GBK编码为例
读文件:(InputSreamReader(f,"GBK"))
文件(二进制)——————>通过GBK码表解码为字符——————>JVM将字符按unicode编码为内存中的字符(两个字节的二进制数)
写文件:(OutputStreamWriter(f,"GBK"))
JVM将字符按unicode编码将内存中二进制数解码为字符——————>字符按GBK编码为二进制流——————>将二进制流写入文件