换行与回车(\r \n)的起源以及在编制语言中的使用
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自身的转义字符以&开头。
&后面可以接转义字符,也可以直接使用十进制数字,比如:
字符 | 转义字符 | 十进制 | 描述 |
---|---|---|---|
" |
"
|
"
|
引号 |
& |
&
|
&
|
and符号 |
< |
<
|
<
|
左尖括号 |
> |
>
|
>
|
右尖括号 |
空格 |
|
|
\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)的起源以及在编制语言中的使用相关推荐
- oracle去除表中字段中特殊符号('tab','空格','换行符','回车')——目前没找到可以一次性替换表中所有异常数据的方法,只能对字段逐一去除,如果有还希望留言赐教
//去掉空格 update T_THIRD_SURVEY_PERSON SET CHECK_DES = trim(replace(CHECK_DES,' ',',')); //去掉换行符 update ...
- 转: 回车(CR)与换行(LF), '\r'和'\n'的区别
[转] 回车(CR)与换行(LF), '\r'和'\n'的区别 2011-03-15 21:11 转载自 Codefuture 最终编辑 Codefuture 一:回车"(Carriage ...
- 回车(CR)与换行(LF), '\r'和'\n'的区别
一:回车"(Carriage Return)和"换行"(Line Feed)起源 首先,弄清两个概念: 回车CR-将光标移动到当前行的开头. ...
- java中换行符号_Java中的回车换行符/n /r /t分析
首先直接上结论: //换行时采用System.getProperty("line.separator") public void test1() { LogTable logTab ...
- 【转载】 C++中回车换行(\n\r)和换行(\r)的区别
原文:http://blog.csdn.net/xiaofei2010/article/details/8458605 windows下的点一下回车,效果是:回车换行,就是\r\n unix系统下的回 ...
- 回车,换行,转义字符“\r”,“\n”是什么关系?
1."回车"这个名词的来历. 关于"回车键"的来历,还得从机械英文打字机说起.在机械英文打字机上,有一个部件叫"字车",每打一个字符(原为单 ...
- java换行转义字符串_回车,换行,转义字符“\r”,“\n”是什么关系?
1."回车"这个名词的来历. 关于"回车键"的来历,还得从机械英文打字机说起.在机械英文打字机上,有一个部件叫"字车",每打一个字符(原为单 ...
- 换行和回车(/n /r)
关于换行和回车 问题由来: 在复习转义字符的时候,碰到这样的描述,之前也没怎么在意换行和回车的区别,甚至第一感觉这不是一回事儿吗? Basic: 换行符就是另起一行,光标位置不一定在开头位置 回车 ...
- python中的print()函数的换行、回车、间距 \n \r \t
python中的print()函数的换行.回车.间距 \n \r \t 设置end = " "参数,表示指定输出之后不再换行,且设置换行输出格式 以用python输出直角三角形为例 ...
最新文章
- Scrum指南2020中文版发布/scrum中文网
- React创建组件的三种方式及其区别
- 关于服务程序生成文件存放在哪的问题
- C# override详解
- 使用cocopods安装Alamofire后各种报错
- Python获取numpy数组中最大的5个元素(保持原顺序)
- Windows 3.1 往事:历史上第一个真正占据主导地位的操作系统
- vue-router的两种模式
- 史上最详细MFC调用mapX5.02.26步骤(附地图测试GST文件)
- java 时间计算_Java程序运行时间计算
- movs 数据传送指令_1.数据传送指令中,错误的操作是()。 A.MOVSS[BX+DI],1000H B.......
- Python游戏开发,pygame模块,Python实现记忆翻牌小游戏
- 密歇根大学新进展:AI+可穿戴设备,20秒检测儿童内化障碍
- 宝塔同时安装苹果cms海洋cms_苹果cms和海洋cms通用的百度主动推送工具
- DynaSLAM源码笔记-检测动态物体部分梳理
- 数据结构算法常见的 100 道面试题全解析:2019 版
- 【组合数学】36军官问题
- spark count统计元素个数
- 基于web的教学答疑系统
- 【软件测试的计划和策略】
热门文章
- ASP.NET MVC下使用AngularJs语言(一):Hello your name
- Android——继续深造——从安装Android Studio 2.0开始(详)
- mysql命中索引规律
- ASP.NET:关于.net中的runat
- LINQ学习之旅——准备(C#3.0新特性补充)
- org.apache.axis.ConfigurationException: No service named ldapOperate is available解决方法
- 绑定bindchange事件的微信小程序swiper闪烁,抖动问题解决,(将微信小程序切换到后台一段时间,再打开微信小程序,会出现疯狂循环轮播,造成抖动现象)
- ssm项目中使用拦截器加上不生效解决方案
- ThinkPHP3.2.3分页中文参数乱码问题及解决
- Error parsing HTTP request header Larger错误解决方法