zoukankan      html  css  js  c++  java
  • 字符编码UTF-8

    ascii码:用一个字节的低7位来表示英文的128个字符,高1位统一为0。后来随着越来越多的文字被编入ascii吗,高七位也被编进去了。

    GB2312:汉字的出现,ascii码无法满足了,所以就出现了GB2312。

    UNICODE:为了各国都能认识且使用统一的编码,就发明了这个编码,又名万国码

    --------------------------------------------

    因为UNICODE之规定了文字和二进制的映射,但是没有规定在实际中怎么存储,因为不同的字需要占用的二进制位数不是固定的,太长了浪费,太短了有些长的不满足,还有一些操作系统的原因等等。

    UTF-8:随着各国互联,世界村的出现,各国人凑在一起看小电影,一个画面可能会显示多种语言,所以需要一种统一的,高效的,合适的编码来编解码,UNICODE作为一个蓝本,明显不能满足这三个要求,所以UTF-8出现了:

      另外还有utf-16utf-32等。UTF-8不是固定字长编码的,而是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。这是种比较巧妙的设计,如果一个字节的第一位是0,则这个字节单独就是一个字符;如果第一位是1,则连续有多少个1,就表示当前字符占用多少个字节。注意unicode的字符编码和utf-8的存储编码表示是不同的,例如"严"字的Unicode码是4E25,UTF-8编码是E4B8A5,这个7里面解释了的,UTF-8编码不仅考虑了编码,还考虑了存储,E4B8A5是在存储识别编码的基础上塞进了4E25。一般的中文汉字在utf-8中是3个字节,最常见的编码方式是1110xxxx 10xxxxxx 10xxxxxx。

    参考文章:https://blog.csdn.net/weixin_30402343/article/details/95836628

  • 相关阅读:
    C# 图片与Base64的相互转化
    LeetCode 303. Range Sum Query – Immutable
    LeetCode 300. Longest Increasing Subsequence
    LeetCode 292. Nim Game
    LeetCode 283. Move Zeroes
    LeetCode 279. Perfect Squares
    LeetCode 268. Missing Number
    LeetCode 264. Ugly Number II
    LeetCode 258. Add Digits
    LeetCode 257. Binary Tree Paths
  • 原文地址:https://www.cnblogs.com/YsirSun/p/12656451.html
Copyright © 2011-2022 走看看