JS中的File(三):文件编码格式(ASCII、Unicode、UTF8等)

在进行文件读写的时候,如果没有了解清楚文件的编码格式,可能就会在解析或者写入的时候生成乱码。这是非常让人心烦的!

因此在这里对常用的文件编码格式做一个详细的介绍

一、ASCII

这是基于拉丁字母的字符编码方法,比较简单,无法表明汉字以及其他的复杂符号

编码大小为8bit,也就是一个字节,最多可以表示256个字符。
其中0-31为控制字符(比如换行回车等),32-126为打印字符(比如A-Z、a-b),127为删除命令 

* 完整的码表:Ascii完整码表(256个)_ascii码对照表-CSDN博客

二、GB2312和GBK

这两种编码主要是解决了汉字收录问题。

  • GB2312编码:16bit(2个字节),适用于汉字处理、汉字通信等系统之间的信息交换,通行于中国大陆;新加坡等地也采用此编码。中国大陆几乎所有的中文系统和国际化的软件都支持
  • GBK编码:16bit(2个字节),兼容GB2312,收录了 21003 个汉字,共有 23940 个码位。而且它与 Unicode 组织的Unicode编码完全兼容

三、Unicode 和 UTF-8、UTF-16、UTF-32

  • Unicode 编码:通常16bit(2个字节),可以对应所有符号的编码。

把常用的放到 0x0000 - 0xFFFF,这叫做基本平面(BMP);从 0x010000 - 0x10FFFF 再划分为其他平面。unicode只是一种编码规范,定义了任意一个字符到数字的一一对应关系。Unicode给所有的字符一一对应的关系,但是如果用来储存太浪费空间,比如,字符'A',ASCII编码只需要一个字节(8位),但是用Unicode就翻了一倍。

  • UTF-8,Unicode Transformation Format,意思是为可变长度编码,通常一个字符用1-4个字节表示,兼容ASCII编码,与Unicode的转换关系如下:

JS中的File(三):文件编码格式(ASCII、Unicode、UTF8等)_第1张图片

  •  UTF-16和UTF-32同理:UTF-16,可变长编码,通常是以16bit(2字节)为一个字符块,1-2字符块为编码大小范围。在处理特殊字符(如表情符号)时,UTF-16 的变长特性使得某些字符可能占用4个字节;UTF-32中一个字符始终占用4个字节,定长编码方式,适用于对所有字符使用相同的字节长度的场景

你可能感兴趣的:(JavaScript学习笔记,前端)