Unix和Windows间的文字文件转换
在用电报通讯的年代,人们发明了一种用7bits把常用的英文和标点编码的方法 — 这就是至今还在计算机世界应用的ASCII。
电报机每当打印到一行结尾时便需要「跳进下一行」并「回到第一格」,因此ASCII有LF(Line Feed, 0×0A) 和CR(Carriage Return, 0×0D)。在计算机的世其实并不需要用两个字符代表「下一行」的意思,为了省资源,在设计OS时一些人就决定用其中一个字符代表「下一行」1,因为大家选择不同,做成了不同系统的「下一行」符号不同的问题。
在用电报通讯的年代,人们发明了一种用7bits把常用的英文和标点编码的方法 — 这就是至今还在计算机世界应用的ASCII。
电报机每当打印到一行结尾时便需要「跳进下一行」并「回到第一格」,因此ASCII有LF(Line Feed, 0×0A) 和CR(Carriage Return, 0×0D)。在计算机的世其实并不需要用两个字符代表「下一行」的意思,为了省资源,在设计OS时一些人就决定用其中一个字符代表「下一行」1,因为大家选择不同,做成了不同系统的「下一行」符号不同的问题。
这问题常见于在 Windows 上传一些档案到 Unix Server 中,如果不经转换 Unix 会见到一些古怪符号 (显示成^M的CR字符)。如果己经有一堆Windows的文字文件,怎样把它们转换成Unix的文字文件?不用自己写转换软件,你可以使用Unix command tr (translate) 或 sed (Stream Editor):
解决方法:
:%s/^M//g
注意:
其中^M 必须是同时按 Ctrl+V+M ,表示回车。不是直接输入 ^M,也不是粘帖复制。或者先Ctrl+V,再Ctrl+M