ASCII 转义字符(Escape Character)

\r 和 \n 属于转义字符。那转义字符是什么呢?为什么需要转义字符呢? 这得从ASCII 码说起。

起源

直观来说, 电脑只能识别电流的强弱,比如强电流标识为1, 弱电流标识为0。这也就是电脑采用的二进制的原理, 0和1如何用来表达人类10进制的数据以及丰富的字符呢?
将多个位数的二进制与十进制进行转换就可以达成这个目标,这其中又衍生了八进制以及十六进制。
除了数字,字母、汉字又怎么标识呢? 这一整天就需要一个规则和标准了。ASCII (American Standard Code for Information Interchange,美国信息互换标准代码)是由美国于1967就定义了的标准,其基于拉丁字母定义了一套电脑的编码标准, 使用单个字节,也就是8个比特位进行编码,排除首位作为符号位,7个二进制位的0、1 组合,总共包含 2^7 = 128个字符。这128个字符可以分为两类:

  • 可显示字符:可以通过键盘输入并显示,总共95个: 比如

    • 0 (0011 0000, 十进制48)
    • 1 (0011 0001, 十进制49)
    • a (0110 0001, 十进制97)
  • 控制字符:无法直接显示或是无法从键盘输入的字符,总共33个,比如:
    • 换行 LF,(0000 1010, 十进制10)
    • 回车,CR ,(0000 1101, 十进制13)
    • 响铃, BEL(0000 0111, 十进制7)

因为控制字符无法在显示屏直接显示,或是无法从键盘输入,如果要记住这些编码,比较不方便,也不容易。于是针对这些字符用一些比较容易记住的方式来转换,也就是转义字符。转义字符以反斜线后面加字符或是数字来表示,常见的转义字符如下:

转义字符 十进制ASCII 意义
\a 响铃,BEL
\b 退格,BS
\n 换行 LF
\r 回车 CR
\t 水平制表 HT
\v 垂直制表 VT
\ddd 三位八进制
\xhh 十六进制数

编程语言中的使用

C、Java、Python等编程语言中可以直接使用转义字符, 以\a 响铃为例, 其效果是电脑发出“嘀”的一声。
在C和Python中可以通过print()函数使用。

  • C:printf("%c",'\a');
  • Python:print("\a")
    在Java中不能直接Print响铃转义符,但是其他转义符可以。

HTML转义字符

HTML 语言使用<html>、<titile>等标签来显示页面,所以 < > 这样的符号在HTML语言中有特殊的意义,如果的确要使用这些字符的话,就需要进行一层转换, 称为HTML的转义字符。
所以, HTML语言除了支持标准的ASCII转义字符外,自身也有一套需要转义字符的机制。HTML自身的转义字符以&开头。
&后面可以接转义字符,也可以直接使用十进制数字,比如:

字符 转义字符 十进制 描述
" &quot; " 引号
& &amp; & and符号
< &lt; < 左尖括号
> &gt; > 右尖括号
空格 &nbsp;  

\r 与 \n

  • \r , 回车, r 是return 的简写
  • \n, 换行, newline.
    在文本编辑时,回车和换行的光标都会移到下一行,但位置不一样,回车会到行首。在不同的操作系统中,每行结尾的处理不同:
  • Windows, 结尾是”\r\n“, 回车+换行
  • Unix,结尾 \n, 只有换行
  • Mac, 结尾 \r 只有回车。
    所以同一份文件,在不同的操作系统打开的话, 看到的效果会不一样, 比如Mac/Unix文件在Windows打开会变成一行。
    为什么会出现这种差异呢?
    在计算机出现之前,使用电传打字机(Teletype Model 33)来打字,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
        于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做―回车‖,告诉打字机把打印头定位在左边界;另一个叫做―换行‖,告诉打字机把纸向下移一行。  这就是―换行‖和―回车‖的来历,从它们的英语名字上也可以看出一二。
         后来,计算机发明了,这两个概念也就用在计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。  Unix系统里,每行结尾只有―<换行>‖,即―\n‖;  Windows系统里面,每行结尾是 ―<换行><回车>‖,即―\n\r‖;  Mac系统里,每行结尾是―<回车>‖。一个直接后果是,Unix/Mac 系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M 符号。

chr(10) chr(13)

在VB 和Oracle中提供了chr()函数获取换行和回车。

select chr(13) from dual;
select chr(16) from dual;

换行与回车(\r \n)的起源以及在编制语言中的使用相关推荐

  1. oracle去除表中字段中特殊符号('tab','空格','换行符','回车')——目前没找到可以一次性替换表中所有异常数据的方法,只能对字段逐一去除,如果有还希望留言赐教

    //去掉空格 update T_THIRD_SURVEY_PERSON SET CHECK_DES = trim(replace(CHECK_DES,' ',',')); //去掉换行符 update ...

  2. 转: 回车(CR)与换行(LF), '\r'和'\n'的区别

    [转] 回车(CR)与换行(LF), '\r'和'\n'的区别 2011-03-15 21:11 转载自 Codefuture 最终编辑 Codefuture 一:回车"(Carriage ...

  3. 回车(CR)与换行(LF), '\r'和'\n'的区别

    一:回车"(Carriage Return)和"换行"(Line Feed)起源 首先,弄清两个概念: 回车CR-将光标移动到当前行的开头.                ...

  4. java中换行符号_Java中的回车换行符/n /r /t分析

    首先直接上结论: //换行时采用System.getProperty("line.separator") public void test1() { LogTable logTab ...

  5. 【转载】 C++中回车换行(\n\r)和换行(\r)的区别

    原文:http://blog.csdn.net/xiaofei2010/article/details/8458605 windows下的点一下回车,效果是:回车换行,就是\r\n unix系统下的回 ...

  6. 回车,换行,转义字符“\r”,“\n”是什么关系?

    1."回车"这个名词的来历. 关于"回车键"的来历,还得从机械英文打字机说起.在机械英文打字机上,有一个部件叫"字车",每打一个字符(原为单 ...

  7. java换行转义字符串_回车,换行,转义字符“\r”,“\n”是什么关系?

    1."回车"这个名词的来历. 关于"回车键"的来历,还得从机械英文打字机说起.在机械英文打字机上,有一个部件叫"字车",每打一个字符(原为单 ...

  8. 换行和回车(/n /r)

    关于换行和回车 问题由来: ​ 在复习转义字符的时候,碰到这样的描述,之前也没怎么在意换行和回车的区别,甚至第一感觉这不是一回事儿吗? Basic: 换行符就是另起一行,光标位置不一定在开头位置 回车 ...

  9. python中的print()函数的换行、回车、间距 \n \r \t

    python中的print()函数的换行.回车.间距 \n \r \t 设置end = " "参数,表示指定输出之后不再换行,且设置换行输出格式 以用python输出直角三角形为例 ...

最新文章

  1. Scrum指南2020中文版发布/scrum中文网
  2. React创建组件的三种方式及其区别
  3. 关于服务程序生成文件存放在哪的问题
  4. C# override详解
  5. 使用cocopods安装Alamofire后各种报错
  6. Python获取numpy数组中最大的5个元素(保持原顺序)
  7. Windows 3.1 往事:历史上第一个真正占据主导地位的操作系统
  8. vue-router的两种模式
  9. 史上最详细MFC调用mapX5.02.26步骤(附地图测试GST文件)
  10. java 时间计算_Java程序运行时间计算
  11. movs 数据传送指令_1.数据传送指令中,错误的操作是()。 A.MOVSS[BX+DI],1000H B.......
  12. Python游戏开发,pygame模块,Python实现记忆翻牌小游戏
  13. 密歇根大学新进展:AI+可穿戴设备,20秒检测儿童内化障碍
  14. 宝塔同时安装苹果cms海洋cms_苹果cms和海洋cms通用的百度主动推送工具
  15. DynaSLAM源码笔记-检测动态物体部分梳理
  16. 数据结构算法常见的 100 道面试题全解析:2019 版
  17. 【组合数学】36军官问题
  18. spark count统计元素个数
  19. 基于web的教学答疑系统
  20. 【软件测试的计划和策略】

热门文章

  1. ASP.NET MVC下使用AngularJs语言(一):Hello your name
  2. Android——继续深造——从安装Android Studio 2.0开始(详)
  3. mysql命中索引规律
  4. ASP.NET:关于.net中的runat
  5. LINQ学习之旅——准备(C#3.0新特性补充)
  6. org.apache.axis.ConfigurationException: No service named ldapOperate is available解决方法
  7. 绑定bindchange事件的微信小程序swiper闪烁,抖动问题解决,(将微信小程序切换到后台一段时间,再打开微信小程序,会出现疯狂循环轮播,造成抖动现象)
  8. ssm项目中使用拦截器加上不生效解决方案
  9. ThinkPHP3.2.3分页中文参数乱码问题及解决
  10. Error parsing HTTP request header Larger错误解决方法