结合XML谈下CR,LF,NL

在纯文本的处理中,肯定会遇到换行的处理.而Linux和win的处理是有差异的,在这次写的Linux和win的服务器交互XML文件的程序中暴露出这个问题了.

由于XML是一种用来存储的纯文本信息,在传输中就可以不考虑诸如字节序等的问题,对其使用字符串处理的函数对其进行处理也就显得比较得心应手.

1.首先说明一下CR和 LF

CR和LF是用ASCII的控制字符(ASCII分为可显示的和不可显示的,使用UE打开的时候,可显示的就显示为字符,不可显示的就显示为点),它们的值为

<CR>   0x0D  13  '/r'

<LF>   0x0A  10  '/n' (有的ASCII 写作 <NL>,也就是new line的意思,这样似乎好理解下)

CR的意思是:carriage return,马车返回,也就是回车的意思(翻译是从这里来的,英文取的应该是引申的意义)

LF的意思是:line feed:行满了,也就是说本行已满,下面的内容为下一行的(这就是要换行的意思了)

在缓存中插入以上字符,在被显示的时候就会显示为特定的模式,如以下的字符

ABCD<CR><LF>EFG

就会被显示为:

ABCD

EFG

2.从存储的角度上看,<CR>和<LF>也是占用1个字节,和其他字符是一样的.

3.从操作系统使用的角度看下如何表示换行

Dos和windows回车+换行CR/LF
UNIX/Linux换行符LF
MAC OS回车符CR


在XML标准中,使用<CR><LF>的方式表示换行,也就是说会在行的末尾看到 0d 0a 2个连续的字符.

在XML中的tab使用插入 /t 来表示的(vertical tab,水平的一个tab的意思),插入/b就是backspace退格的意思(删除一个字符),插入space就是插入一个空格的意思.

4.实现的时候要怎么做:

(1).在Linux下如果对本件进行读取的时候要按照二进制的形式来进行,这样文件中就不会有Linux特有的回车和换行来造成影响,open的时候加上b这个标志位

fd = fopen(“path”,  “wb+”)

这样只是更好一些,不加也是不影响操作的(就具体的不同只要写程序测试下,这里mark下)

(2).如果是在缓存中的操作,那么对缓存写什么就是什么,就无需担心不同操作系统的特殊处理,写入你想要的信息就是了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魔尊moon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值