[oeasy]python0128_unicode_字符集_character_set_八卦_星座

简介: [oeasy]python0128_unicode_字符集_character_set_八卦_星座

unicode 回忆上次内容

  • 中国的简体和繁体汉字
  • 字符数量都超级大
  • 彼此还认对方为乱码


  • 如果有一种编码所有的字符都能编进去就好了
  • 中日韩(CJK)
  • 欧洲拼音
  • 梵文
  • 阿拉伯文
  • 卢恩字符
  • 等等等都包括进去


添加图片注释,不超过 140 字(可选)

  • 能有么?🤔

回顾历史

  • 计算机中只有 01
  • 并且是存储在字节里的
  • 原来只能表示和处理数字
  • 字符无法处理


  • 后来某些二进制数固定下来代表某个字符
  • 形成了字符集
  • 从博多码(5bits)到 BCDIC(6bits)
  • 再到 EBCDIC码(8bits) 最后统一于 ascii


添加图片注释,不超过 140 字(可选)

  • 但是 各国家和地区
  • 都有 自己的文字
  • 这一领域 没有 统一的标准


  • 所以每个国家和地区
  • 都制定自己的编码标准
  • 想要同时显示 法语字符和西里尔字符 是不可能的


  • 同样字节状态 在不同编码格式里 代表不同的字符
  • 都认为对方是乱码
  • 彼此不兼容


  • 编码方式有上百种之多
  • 互为乱码


分久必合

  • 无法解决的问题背后 可能是机会
  • 1980 年代
  • Xerox(施乐公司) 在 开始尝试一种编码
  • 能融合多语言


  • Xerox 字符集包括
  • 拉丁
  • 阿拉伯
  • 希伯来
  • 希腊
  • 西里尔
  • 中日韩字符



添加图片注释,不超过 140 字(可选)

  • 这个字符集 1988 年进化为 unicode
  • uni的意思是一


uni

  • uni 来自于
  • unique
  • unified
  • universal
  • unicorn
  • university
  • uniform
  • unit
  • union


添加图片注释,不超过 140 字(可选)

  • uni-开头的单词都有这个特点

universe

  • universe
  • uni


  • verse
  • 旋转


  • universe
  • 绕着一个东西转的
  • 从一转化而来的



  • 一生二 二生三 三生万物

添加图片注释,不超过 140 字(可选)

  • 后来日语
  • 将universe翻译成宇宙


  • 宇宙一词 中文以前就有
  • 上下四方曰宇
  • 古往今来曰宙


得一

  • 这个词头计算机领域也有很多很牛的单词
  • unit、unix、unity、unicode


  • 这名字得一了啊
  • 少则得,多则惑,是以圣人抱一为天下式
  • 天得一以清,地得一以宁,神得一以灵,谷得一以盈,万物得一以生,侯王得一而以为正


  • 这个版本叫做 unicode88
  • 是 16 位的 unicode


  • 1989 年
  • Unicode 这个工作组来了一些从大厂来的人
  • 微软和 sun 都来了


  • 1991/1/3 日
  • Unicode 委员会在加州成立


  • 1991 年 8 月
  • unicode 第一卷发布


  • 1992 年 6 月
  • 第 2 卷发布
  • 这里面包含了汉语字符



  • unicode 委员会 形成
  • Adobe, Apple, Facebook, Google, IBM, Microsoft, Netflix 和 SAP SE 等公司的工程师加入


添加图片注释,不超过 140 字(可选)

  • 字符的全球标准化开始了

基础字符

  • ascii 还是牢牢占据着 0-127 这最关键的位置
  • 紧挨着 ascii 的字符的就是 Latin-1
  • 由 iso-8859-1 西欧、北欧字符集进化而来



添加图片注释,不超过 140 字(可选)

  • 这其实也 标识出unicode的 编码排序规则
  • 以书写系统为单位
  • 分类和收录



各种拼音文字

  • 比如卢恩字符

添加图片注释,不超过 140 字(可选)

  • 再去捋一捋
  • 拉丁字符进化过程吧


拉丁字符进化史

发音

词义

埃及圣书体

楔形写法

希腊字符

拉丁字符

alpha

𓃾

𐤀

Αα

Aa

beta

房子

𓉐

𐤁

Ββ

Bb

gīml

棍子

𓌙

𐤂

Γγ

Cc,Gg

dālet

门或者鱼

𓉿

𐤃‎

Δδ

Dd

  • 去看看他们的序号

添加图片注释,不超过 140 字(可选)

  • 希腊字符比较好找
  • 序号较小


  • 不过希腊字符之前只有大写字母
  • 小写字母怎么来的呢?


小写字母

添加图片注释,不超过 140 字(可选)

  • 手写画风固定下来后
  • 又被印刷术 再次固定


添加图片注释,不超过 140 字(可选)

  • 能找到埃及文字的序号吗?

埃及文字

  • unicode 确实给埃及文字排了序号
  • 但是序号很大
  • 而且目前终端没有字型支持



添加图片注释,不超过 140 字(可选)

  • 字型文件 实现难度不小
  • 实际需求 也不确定


  • 同为 拼音文字的不同书写系统
  • 可能会用到 长得一样的字符
  • 会是一个序号吗?



书写系统

  • 英文字母、拉丁字母、西里尔文字母
  • 都源自希腊文字母 Omicron


  • 不同的书写系统
  • 可能会长相一样的字母
  • 但对应着不同的序号


添加图片注释,不超过 140 字(可选)

  • 虽然字形一模一样
  • 但是属于三个书写系统
  • 希腊文字母
  • 英文字母
  • 西里尔字母



  • 所以 有不同的序号

持续进化

  • 每个版本都会有些变化
  • 整个编码区域分成若干个 blocks
  • 新版本对于这些 blocks 里面的字符有所增加


添加图片注释,不超过 140 字(可选)

十二星座

  • 除了字符之外还有很多符号
  • 比如十二个星座


添加图片注释,不超过 140 字(可选)

  • 集装箱 标准化一旦开始
  • 就会 反过来 约束火车轮船飞机


  • 你要想 加入这个交流的行列
  • 必须先了解相应的接口
  • 从遵守现有的规则开始



unicode时代

  • 新编码unicode的时代来了
  • 他会把一切字符吸收进去


添加图片注释,不超过 140 字(可选)

  • 同一个文档
  • 可以既有中文
  • 又有日文
  • 还有韩文


  • 一切字符都能正常显示

阴阳太极

  • 易有太极
  • ️☯


添加图片注释,不超过 140 字(可选)

  • 是生两仪
  • ⚊ 陽 (U+268A) ⚋ 陰 (U+268B)


  • 两仪生四象
  • ⚌(太陽,U+268C)、⚍(少陰,U+268D)、⚎(少陽,U+268E)、⚏(太陰,U+268F)


添加图片注释,不超过 140 字(可选)

八卦

  • 四象生八卦
  • ☰ ☱ ☲ ☳ ☴ ☵ ☶ ☷


添加图片注释,不超过 140 字(可选)

  • 如果把
  • ⚊ 陽 (U+268A)当做1
  • ⚋ 陰 (U+268B)当做0


  • 顺序是逆序(递减)
  • 从外而内









  • 八卦有了
  • 可以重卦么?


重卦

添加图片注释,不超过 140 字(可选)

  • 八八六十四卦

添加图片注释,不超过 140 字(可选)

  • 看起来都可以玩算卦了
  • 还能做什么呢?

乱来

  • 来随便试一个

print("\u9999")

  • 看看这是什么字?

中日韩字符

  • 中文编码原来是 gbk
  • unicode 现在unicode把中日韩(CJK)当成一组
  • 排序是CJK
  • 位置是unicode.org下方的code chart中找到


添加图片注释,不超过 140 字(可选)

  • 当然关于排序各有各的排法
  • 中国是中日韩
  • 日本是日中韩
  • 韩国是韩中日


  • unicode组织的CJK显然综合了东亚文化圈的排名
  • 我仿佛听到卡吉玛


所在位置

  • 象形文字数量确实是拼音文字没有办法比的

添加图片注释,不超过 140 字(可选)

  • 他们听到我们有两万个字母的时候都傻了

融合而来

  • unicode中的文字将
  • 中国汉字
  • 朝鲜汉字
  • 日本汉字
  • 综合起来


添加图片注释,不超过 140 字(可选)

  • 得到一个汉字
  • 那如果有很多异体字怎么办?

回字的几种写法

添加图片注释,不超过 140 字(可选)

  • 这些都是异体字
  • 或者叫做通假字
  • 在计算机里是如何的呢?

茴香豆

添加图片注释,不超过 140 字(可选)

  • 在0x4e00到0x9fff这个范围内
  • 基本一个汉字就只有一种写法

添加图片注释,不超过 140 字(可选)

总结

  • 字符集
  • 从博多码
  • ascii
  • 再到 8859
  • 各自割据


  • 如何把世界上各种字符统进行编码
  • unicode顺势而生不断进化
  • 不过字符总量超过了65536
  • 每个汉字都有位置


添加图片注释,不超过 140 字(可选)

  • 所有汉字里面第一个汉字是什么呢?
  • 我们下次再说!👋

添加图片注释,不超过 140 字(可选)


目录
相关文章
|
17天前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
102 80
|
24天前
|
人工智能 C语言 Python
[oeasy]python051_什么样的变量名能用_标识符_identifier
本文介绍了Python中变量名的命名规则,强调标识符(identifier)必须以字母或下划线开始,后续可包含字母、下划线及数字。通过`isidentifier()`函数可验证字符串是否为合法标识符。文中还探讨了为何数字不能作为标识符的开头,并提供了相关练习与解答,最后提及这些规则源自C语言的影响。
112 69
|
26天前
|
Python
[oeasy]python050_如何删除变量_del_delete_variable
本文介绍了Python中如何删除变量,通过`del`关键字实现。首先回顾了变量的声明与赋值,说明变量在声明前是不存在的,通过声明赋予其生命和初始值。使用`locals()`函数可查看当前作用域内的所有本地变量。进一步探讨了变量的生命周期,包括自然死亡(程序结束时自动释放)和手动删除(使用`del`关键字)。最后指出,删除后的变量将无法在当前作用域中被访问,并提供了相关示例代码及图像辅助理解。
111 68
|
6天前
|
Python
[oeasy]python055_python编程_容易出现的问题_函数名的重新赋值_print_int
本文介绍了Python编程中容易出现的问题,特别是函数名、类名和模块名的重新赋值。通过具体示例展示了将内建函数(如`print`、`int`、`max`)或模块名(如`os`)重新赋值为其他类型后,会导致原有功能失效。例如,将`print`赋值为整数后,无法再用其输出内容;将`int`赋值为整数后,无法再进行类型转换。重新赋值后,这些名称失去了原有的功能,可能导致程序错误。总结指出,已有的函数名、类名和模块名不适合覆盖赋新值,否则会失去原有功能。如果需要使用类似的变量名,建议采用其他命名方式以避免冲突。
27 14
|
1天前
|
存储 Python
[oeasy]python056_python中下划线是什么意思_underscore_理解_声明与赋值_改名字
在Python中,下划线有多种用途。单下划线(_)常用于避免命名冲突,如将`max`改为`max_`以保留内置函数功能。双下划线(__var__)通常用于特殊方法和属性,如`__name__`、`__doc__`等。此外,单下划线(_)在交互式解释器中表示上一次表达式的值,但不建议作为普通变量名使用。总结:下划线用于避免命名冲突及特殊标识。
9 1
|
15天前
|
C语言 Python
[oeasy]python054_python有哪些关键字_keyword_list_列表_reserved_words
本文介绍了Python的关键字列表及其使用规则。通过回顾`hello world`示例,解释了Python中的标识符命名规则,并探讨了关键字如`if`、`for`、`in`等不能作为变量名的原因。最后,通过`import keyword`和`print(keyword.kwlist)`展示了Python的所有关键字,并总结了关键字不能用作标识符的规则。
29 9
|
23天前
|
Unix 编译器 C语言
[oeasy]python052_[系统开发语言为什么默认是c语言
本文介绍了C语言为何成为系统开发的首选语言,从其诞生背景、发展历史及特点进行阐述。C语言源于贝尔实验室,与Unix操作系统相互促进,因其简洁、高效、跨平台等特性,逐渐成为主流。文章还提及了C语言的学习资料及其对编程文化的影响。
25 5
|
28天前
|
Shell Python
[oeasy]python049_[词根溯源]locals_现在都定义了哪些变量
本文介绍了Python中`locals()`函数的使用方法及其在调试中的作用。通过回顾变量赋值、连等赋值、解包赋值等内容,文章详细解释了如何利用`locals()`函数查看当前作用域内的本地变量,并探讨了变量声明前后以及导入模块对本地变量的影响。最后,文章还涉及了一些与“local”相关的英语词汇,如`locate`、`allocate`等,帮助读者更好地理解“本地”概念在编程及日常生活中的应用。
34 9
|
1月前
|
Python 容器
[oeasy]python048_用变量赋值_连等赋值_解包赋值_unpack_assignment _
本文介绍了Python中变量赋值的不同方式,包括使用字面量和另一个变量进行赋值。通过`id()`函数展示了变量在内存中的唯一地址,并探讨了变量、模块、函数及类类型的地址特性。文章还讲解了连等赋值和解包赋值的概念,以及如何查看已声明的变量。最后总结了所有对象(如变量、模块、函数、类)都有其类型且在内存中有唯一的引用地址,构成了Python系统的基石。
29 5
|
2月前
|
存储 Python 容器
[oeasy]python045_[词根溯源]赋值_assignment_usage_使用
本文回顾了上一次讲解的内容,重点讨论了变量的概念及其在各种系统和游戏中的应用。文章详细解释了变量的声明与赋值操作,强调了赋值即为将具体值存储到变量名下的过程。同时,通过例子说明了字面量(如数字0)不能被赋值给其他值的原因。此外,还探讨了“赋值”一词的来源及其英文表达“assignment”的含义,并简要介绍了与之相关的英语词汇,如sign、assign、signal等。最后,总结了本次课程的核心内容,即赋值操作的定义和实现方式。
28 3