换行回车

回忆上次内容

  • 区分概念

    • terminal终端

      • 主机网络中

        • 最终的 端点
    • TeleTYpewriter
      • 电传打印机
      • 终端硬件
    • shell
      • 终端硬件基础上的

        • 软件壳子
    • Console 控制台
      • 主机旁边 的 控制面板
  • 存储文件 的 时候
    • 我 在文件里 打了回车\n
    • 系统 将0x0a存入字节 进文件
    • 换行 自动就有 回车功能 了吗?
  • 回忆一下
    • 被忽略的 \r

\r

  • \r 也是一个 ascii字符

    • \

      • 转义字符
    • \r
      • 转义序列
  • 什么是 转义 呢?

    • 转义转义 转化含义
    • 把原来 两个字符 : \r
    • 转化为 \r 这样一个字符
  • 没错!

    • \r1ascii字符

  • 那么 \r 这一个字符

    • 对应字节 是多少 呢?

字节状态

  • \r 对应的字节是

    • 0x0d

  • 这个0x0d

    • 好像 在安徒生童话中 出现过

安徒生童话

  • 文本观看 模式下

    • 自动 回车换行

  • 字节观看 模式下

    • 0a
  • 0a前面是0d
    • 0a换行

      • (line-feed)
    • 0d回车
      • (carriage-return)

  • 貌似

    • 总是 成对出现的
    • 为什么 呢?

换行 和 回车

  • 换行

    • 对应 字节0x0a
    • Line-Feed
      • 水平 不动
      • 垂直 向上喂纸
    • 所以是 feed

  • 回车

    • 对应 字节0x0d
    • Carriage-Return
      • 垂直 不动
      • 水平 到纸张左侧
    • 可移动的打印头
      • 运输字符 的 装置 (Carriage)
      • 回到行首
    • 所以是 Return
  • 这是 个控制信号
    • 不过他俩 经常 联合使用

联合使用

  • CRLF 联合使用时

    • 会将 打印纸张 上移一行
    • 打字位置 将到 新行的最左侧
  • 也就是
    • 今天所理解 的 回车换行

  • 电传打字机

    • 渐渐 退出了历史舞台
    • 当初的纸张 变成了 今天的显示器
    • 打字机的按键 也演变为 如今的键盘
  • 甚至 有了 操作系统
    • 操作系统 是 如何理解 回车换行 的呢?

操作系统 Unix

  • 受限于

    • 内存和软盘空间 的 不足
  • 设计者 决定采用
    • 个字符 来表示 换行回车

      • 使用 \n 替代 \r\n
      • 默认 \n = \r\n
    • 个字符干个事

  • 类unix(unix-like) 都是如此

    • 包括 BSD、Linux

unix 和 c 的羁绊

  • C语言

    • 延续了 这个惯例
    • \n
      • 既干 \n的活(换行)
      • 又干 \r的活(回车)
  • 输出中有 \n 的话

  • 如果只有\n

    • 本应是

      • 下图这样的

  • 实际上是

    • 下图这样的

  • 是 回车加换行 的
  • 那还有
    • 纯换行 不回车的效果 吗?

纯换行

  • 纯换行效果可以用\v

  • \v 在ascii中的含义是VT

    • 垂直制表位

  • 序号是 11

Commodore64 和 mac

  • Commondore64

    • 一度 也曾 很流行
    • 同样出于 节省空间的目的
      • 使用 \r 代替 \r\n
      • 这 就有分歧
    • Commodore64 影响了 mac
  • mac
    • 早期 也是

      • 使用 \r 代替 \r\n
      • 甚至按键 都叫做 return
  • 后来 为了 和unix保持一致
    • \r 修改为 \n

      • 可能是因为Mac用户

        • 需要用 ssh 命令

          • 连接 unix-like的服务器
          • 换行不统一
          • 文件读取会出现错误
  • 流行的三大系统(类unix、mac、win)
    • 两个都是\n
  • 来来看看 微软的windows

微软

  • DOS系统 是兼容 CP/M 形成的

    • CP/M 使用 \r\n
  • 键盘上 印的名称是enter
    • 符号是↵

      • 先 LineFeed 再 Return
      • 也是\r\n
    • 对应字节是b"\x0d\x0a"
  • 后来 的 windows
    • 顺着 DOS的惯例

  • 跨系统 浏览文档的时候

    • 会有时候 多行 变成 一行
    • 有的会出现 '0D', '^M' 之类的乱码
  • 不只是 windows记事本️
    • 而且 微软office 等
    • 都曾有 这个困扰
  • win10 最新的记事本️
    • 已经 优化

python 解释器的理解

  • 标准 输入输出流

    • python 的 字符输入

      • 靠的是 终端键盘
    • python 的 显示输出
      • 靠的是 终端屏幕
  • 具体字符
    • 显示\n的时候

      • 就会换行
      • LineFeed
    • 显示\r的时候
      • 就会退回到本行开头
      • CarriageReturn

  • \n 写入文件的时候

    • 就会以 b"\x0a"的字节形式

      • 存储 在 文件 中
  • \r 写入文件的时候
    • 就会以 b"\x0d"的字节形式

      • 存储 在 文件 中
  • python3解释器 基于 操作系统
    • 操作系统 基于 cpu架构
  • 不管什么样的操作系统cpu 架构
    • 只要是 python解释器
    • 对于\n\r的解释方式 就是统一的
      • \n 换行
      • \r 退到行头
  • 这种统一 是跨平台的
    • 跨系统、跨cpu架构的

总结

  • 对于换行和回车
  • 不同层面的理解
    • 电传打字机

      • 两件事
      • 经常 一起干
      • 但也可以 分别干
    • 不同操作系统
      • unix-like

        • 带头简化 成 \n
        • 步调一致 就好
      • mac
        • 为了 避免麻烦
        • 我和 unix-like一致
      • windows
        • 原来 我用户多
        • 定什么规矩 我说了算
        • 惹了 很多问题
        • 现在 我还是 随大流 吧
    • python 解释器
      • unix-like 做得对
      • 不管 在什么系统、什么架构 上
      • 在我python上 是统一 的
  • 光说不练假把式
    • 我能看看电传打字机吗?
  • 我们下次再看!蓝桥->https://www.lanqiao.cn/courses/3584
  • github->https://github.com/overmind1980/oeasy-python-tutorial
  • gitee->https://gitee.com/overmind1980/oeasypython
  • 视频->https://www.bilibili.com/video/BV1CU4y1Z7gQ 作者:oeasy

[oeasy]python0040_换行与回车的不同_通用换行符_universal_newlines的更多相关文章

  1. sql查询字段值的换行及回车符

    SQL的换行.回车符,在MySQL.SQL Server和Oracle中均有不同,下面以列表显示.   MySQL SQL Server Oracle 换行符 \n或\r\n或CHAR(10) CHA ...

  2. \r\n回车换行\r回车\n换行的区别

    在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33,Linux/Unix下的tty概念也来自于此)的玩意,每秒钟可以打10个字符.但是它有一个问题,就是打完一行换行的时候 ...

  3. js实现把textarea通过换行或者回车把多行数字分割成数组,并且去掉数组中空的值。

    删除数组指定的某个元素 var msg = " ";  //textarea  文本框输入的内容 var emp = [ ];   //定义一个数组,用来存msg分割好的内容 1. ...

  4. html转义字符换行以及回车等的使用

    欢迎加入前端交流群交流知识&&获取视频资料:749539640 html换行回车转义字符 换行Line feed   回车Carriage Return  html中换行转义字符 的使 ...

  5. "换行"和"回车"的来历

    \r: return 到当前行的最左边. \n: newline 向下移动一行,并不移动左右. Linux中\n表示:回车+换行: Windows中\r\n表示:回车+换行. Mac中\r表示:回车+ ...

  6. Flex 最全的换行,制表符,回车,空格......特殊符号

    字符 十进制字符编号 实体名字 说明 — &#; — 未使用Unused — &#; — 未使用Unused — &#; — 未使用Unused — &#; — 未使用 ...

  7. 关于textarea中换行、回车、空格的识别与处理

    需求:在textarea中输入文字,提交给后台后,后台输出在另一个页面,文字按原格式显示.   问题:如何还原输入框中的换行和空格? 兼容性:IE9以上.FF.chrome在换行处匹配/\n/     ...

  8. 斑马ZPL指令加入如换行、回车等控制符的方法

    在程序中可能会被过滤掉,直接在指令中加入ASCII对应的16进制字符即可解决改问题, 语法:_十六进制(ASCII) 栗子:hello_0D_0Aworld  换行 扫描结果: hello world

  9. MySQL 去除字段中的换行和回车符

    今天csv 导入关键词的时候遇到问题 字段结束会有 回车符号 解决方法: ), ),'');          char(10):  换行符          char(13):  回车符

  10. mysql去除内容中的换行和回车

    UPDATE tablename SET field = REPLACE(REPLACE(field, CHAR(10), ”), CHAR(13), ”); char(10): 换行符 char(1 ...

随机推荐

  1. 《最新出炉》系列入门篇-Python+Playwright自动化测试-48-Route类拦截修改请求-上篇

    1.简介 在日常工作和学习中,自动化测试的时候:在加载页面时,可能页面出现很多不是很重要或者不是我们所关注的,这个时候我们就可以选择不加载这些内容,以提高页面加载速度,节省资源.例如:可能页面上图片比 ...

  2. NET框架下如何使用PaddleOCRSharp

    打开VSIDE,新建Windows窗体应用(.NET Framework)类型的项目,选择一个.NET框架,如.NET Framework 4.0,右键点击项目,选择属性>生成,目标平台设置成X ...

  3. MQTT服务器连接不上的问题

    问题描述 环境:阿里云服务器Ubuntu 22.04.3 LTS,安装mosquitto后,在虚拟机端订阅消息出现报错(以前用阿里云Ubuntu20.04 LTS的服务器装上就能用),以下服务器ip是 ...

  4. Windows库链接报错

    问题回溯 今天拿到别人已经编译好的库,发现在链接的时候出现了报错 [9/9 12.7/sec] Linking CXX shared module bin\plugins\AsensingPlugin ...

  5. C++笔记(12) 标准模板库STL

    STL提供了一组表示容器.迭代器.函数.函数对象和算法的模板.STL不是面向对象的编程,而是一种不同的编程模式--泛型编程. 容器:与数组类似的单元,可以存储若干个值,存储的值的类型相同: 算法:完成 ...

  6. AT_agc044_c

    problem & blog 由于看到和三进制有关的操作,可以想到建造每个结点都有三个儿子的 Trie.考虑维护两种操作. 1.Salasa 舞 对于这种操作,就是把每一个节点的第一个儿子和第 ...

  7. .NET6 .NET CORE 使用Apollo

    Apollo默认有一个"SampleApp"应用,"DEV"环境 和 "timeout" KEY. nuget 中下载 "Com. ...

  8. 物理机安装Centos系统

    引言 在工作中,经常会在本地搭建开发环境,而使用的基本都是Linux系统,本文就教大家如何安装一套Centos Linux系统 准备 1.系统选择 系统:Centos 版本:7.9 2.镜像下载 下载 ...

  9. 微信和支付宝异步回调通知IP白名单

    附一:微信支付回调通知出口IP列表 商户侧对商户回调通知功能开通白名单网段: 上海电信出口网段:101.226.103.0/25 上海联通出口网段:140.207.54.0/25 上海CAP出口网段: ...

  10. UniRx-unirx中的对象池

    UniRx-unirx中的对象池 对象池Unirxunity 对象池 一.对象池模式 <游戏设计模式-对象池模式> 1.概念 定义一个池对象,其包含了一组可重用对象. 其中每个可重用对象都 ...