字符编码基础

Posted zhangceblogs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符编码基础相关的知识,希望对你有一定的参考价值。

ACSII

美国最初制定的字符编码,对英语字符和二进制之间的关系做了统一规定。

但ASCII码一共规定了128个字符的编码,用来表示其他语言是远远不够的,所以有了Unicode

Unicode

Unicode是一个符号集

javascript允许直接使用码点表示Unicode字符,‘好‘===‘u597D‘

uneacape(‘u597d‘) //好

javaScript使用UCS-2编码格式,属于Unicode的子集

Unicode范围一般所用为u0000-uffff,占用两字节大小,最多只能表示65536个字符。

Unicode的四字节形式被称为UCS-4或UTF-32,包含了Unicode的扩展部分,最多可定义100万以上唯一字符。

UTF-8/16/32

UTF-8是编码传输方式

UTF-8是变长编码,根据每个Unicode代码点不同,可以有1-3个字节的不同长度。

Unicode符号范围 UTF-8编码方式
(十六进制) (二进制)
0000 0000-0000 007F 0xxxxxxx
0000 0080-0000 07FF 110xxxxx 10xxxxxx
0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

UTF-16长度相对固定,只要不处理大于u200000范围的字符,每个Unicode代码点使用16位(2字节)表示,超出部分使用两个UTF-16(4字节)表示。按照高低位字节顺序,又分为UTF-16BE/UTF_16LE.

LE(Litter endian)“小头方式”,以Unicode 4E25为例,需要两个字节来存储,25在前,4E在后就是“大头模式”(Big endian)

UTF-32长度始终固定,每个Unicode代码点使用32位即4字节表示。按照高低位字节顺序,又分为UTF-32BE/UTF-32LE。

进制转换方法

  1. 十进制转为其他进制
var x = 66;
x.toString(16); //"42"
  1. 其他进制转换为十进制
parseInt(11,2);//3

写一个方法,将n进制转换为m进制

function translate(num,n,m){
    return parseInt(num,n).toString(m)
}

扩展阅读

http://www.ruanyifeng.com/blog/2014/12/unicode.html

https://blog.whezh.com/encoded/

以上是关于字符编码基础的主要内容,如果未能解决你的问题,请参考以下文章

Python基础知识之字符编码与转码

计算机基础 ---- 编码(er)

markdown 打字稿...编码说明,提示,作弊,指南,代码片段和教程文章

逆向及Bof基础实践

1.2 Python基础知识 - 字符编码

Python 基础 - Day 2 Learning Note - 字符转编码操作