• unicode、utf8、字符串字面值


    发现好多新人都不明白,或者说没有直观的感受,其实很简单。

    简单的说,unicode是一种将全球文字都涵盖的字典 - 可以认为每个字符都有一个数字索引。

    比如可以这样(假设):'a' 的索引是13,'我' 的索引是11245,'の' 的索引是 50789等等。

    这样,任何人只要拿着数字就可以找到对应的字符。

    那么,UTF8又是怎么回事?

    还是要从unicode说起,我们可以认为unicode只是字符与数字的对应关系,至于怎么保存这个数字(保存了数字,也就等于保存了字符),那就是unicode用户的事了。

    (多说一句,这里的unicode用户不是你我他这种,而是程序)

    各路大神纷纷实现了自己的存储方式,或者考虑编解码效率,或者考虑存储效率。

    但各自为战总是不方便沟通交流,于是某个组织推出了一种编码UTF,号召大家都用这个。

    只不过这个编码工作显然也需要一代一代的迭代进化,所以有了今天的UTF8编码。兼顾存储效率和读写效率。

    字符串字面值,说白了就是一串unicode序列。

    如果你搞Java,那在java.lang.String里有code point的概念,这个code point应该指的就是unicode - 明天确认一下。

    如果你搞golang,应该知道golang中所有字符串都是UTF8编码,还有一个rune类型,不妨想想是怎么回事。

    ps:

      至于为什么出现unicode,这就跟春秋战国时期各个国家都有自己的文字一样,沟通很不方便,而且可能一样的字形截然不同的含义。

      于是有了unicode,保证了大家书同文车同轨,剩下的爱怎么使用这种文字都是你的事了。

  • 相关阅读:
    Appium自动化环境搭建
    真机Android 8.0版本以上uiautomator定位元素-Unsupported protocol: 2/Unexpected error while obtaining UI hierarchy错误处理
    rsa非对称加密
    QT使用OpenSSL的接口实现RSA的加密解密
    lua安装后其他库使用产生问题解决方法
    log4cpp的使用描述
    std::function和std::bind
    C++11线程睡眠的方式
    高精度计时器
    如何解决TCP拆包粘包问题
  • 原文地址:https://www.cnblogs.com/larryzeal/p/9411005.html
Copyright © 2020-2023  润新知