- 浏览: 86303 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (148)
- 全文检索 (1)
- java (29)
- xml (2)
- json (2)
- redis springmvc (1)
- Redis (5)
- 开发常识 (1)
- tomcat (2)
- 单元测试Junit (2)
- 设计模式 (2)
- spring (10)
- jvm (2)
- eclipse (4)
- echart (1)
- mybatis (1)
- mysql (3)
- web (1)
- js (2)
- PL/SQL (2)
- 其他 (1)
- 人生 (1)
- 安全 (2)
- jsp (2)
- 硬件电脑 (1)
- linux (3)
- git (10)
- oracle (8)
- ant (1)
- maven (2)
- 正则表达式 (2)
- chrome (1)
- 面试 (6)
- 多线程 (19)
- bug (11)
- java工具类 (3)
- 算法 (1)
- bug,git (1)
- shell (2)
- springmvc (2)
- Java8 (1)
- 消息队列-rocketmq (1)
- es (1)
- dubbo (0)
- spring cloud (0)
- hashmap (0)
- springboot (1)
- velocity (0)
问题:
当在window下编辑文本文件,使用ftp上传linux服务器,文件的真实大小读取的就是跟预设的不一样,导致文件传输失败,表现的现象是总多了1个字节
排查:
通过比对曾经传输成功的文件和这个传输失败的文件发现了原因
原来文本文件中分隔换行符在unix和dos下格式是有区别。
在UE里,使用十六进制可以查看到unix下回车是用0xOA表示的,而dos下的回车则是0x0D0A
在window下比在unix下多了一个字节,这也是为啥校验总是失败。
最后通过UE将文件转成unix格式,并且通过二进制传输的方式通过ftp上传到linux服务器,文件大小就对了。
总结:
任何一个小的知识点都可能成为拦路虎,以后要多加学习多加总结,多加留意。
学习:
此处是有个知识点的,关于换行和回车
一:回车”(Carriage Return)和“换行”(Line Feed)起源
首先,弄清两个概念:
回车CR-将光标移动到当前行的开头。
换行LF-将光标“垂直”移动到下一行。(而并不移动到下一行的开头,即不改变光标水平位置)
在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33,Linux/Unix下的tty概念也来自于此)的玩意,每秒钟可以打10个字符。
但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。
要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。
一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。
后来,计算机发明了,这两个概念也就被搬到了计算机上。
那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。
于是,就出现了分歧。
Unix系统里,每行结尾只有“<换行>”,即"\n";
Windows系统里面,每行结尾是“<换行><回车>”,即“\n\r”;
Mac系统里,每行结尾是“<回车>”,即"\n";
一个直接后果是,Unix/Mac系统下的文件在 Windows里打开的话,所有文字会变成一行;
而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。
二:区别
CR用符号'\r'表示, 十进制ASCII代码是13, 十六进制代码为0x0D
LF使用'\n'符号表示, ASCII代码是10, 十六制为0x0A
Dos和windows采用回车+换行CR/LF表示下一行,
而UNIX/Linux采用换行符LF表示下一行,
苹果机(MAC OS系统)则采用回车符CR表示下一行.
所以Windows平台上换行在文本文件中是使用 0d 0a 两个字节表示, 而UNIX和苹果平台上换行则是使用0a或0d一个字节表示.
注1:关于“回车键”的来历,还得从机械英文打字机说起。在机械英文打字机上,有一个部件叫“字车”,每打一个单词,“字车”就前进一格。当打满一行字符后,
打字者就得推动“字车”到起始位置,这时打字机会有两个动作响应:一是“字车”被归位,二是滚筒上卷一行,以便开始输入下一行,这个推动“字车”的动作叫“回车”。
注2:这种差别在编程、不同OS之间传输纯文本时最需要注意。
参考了这两位博主,感谢
https://blog.csdn.net/weixin_34640289/article/details/116556550
https://mp.weixin.qq.com/s/kkpSLEiFNQR8IM1zmMcCig
当在window下编辑文本文件,使用ftp上传linux服务器,文件的真实大小读取的就是跟预设的不一样,导致文件传输失败,表现的现象是总多了1个字节
排查:
通过比对曾经传输成功的文件和这个传输失败的文件发现了原因
原来文本文件中分隔换行符在unix和dos下格式是有区别。
在UE里,使用十六进制可以查看到unix下回车是用0xOA表示的,而dos下的回车则是0x0D0A
在window下比在unix下多了一个字节,这也是为啥校验总是失败。
最后通过UE将文件转成unix格式,并且通过二进制传输的方式通过ftp上传到linux服务器,文件大小就对了。
总结:
任何一个小的知识点都可能成为拦路虎,以后要多加学习多加总结,多加留意。
学习:
此处是有个知识点的,关于换行和回车
一:回车”(Carriage Return)和“换行”(Line Feed)起源
首先,弄清两个概念:
回车CR-将光标移动到当前行的开头。
换行LF-将光标“垂直”移动到下一行。(而并不移动到下一行的开头,即不改变光标水平位置)
在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33,Linux/Unix下的tty概念也来自于此)的玩意,每秒钟可以打10个字符。
但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。
要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。
一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。
后来,计算机发明了,这两个概念也就被搬到了计算机上。
那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。
于是,就出现了分歧。
Unix系统里,每行结尾只有“<换行>”,即"\n";
Windows系统里面,每行结尾是“<换行><回车>”,即“\n\r”;
Mac系统里,每行结尾是“<回车>”,即"\n";
一个直接后果是,Unix/Mac系统下的文件在 Windows里打开的话,所有文字会变成一行;
而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。
二:区别
CR用符号'\r'表示, 十进制ASCII代码是13, 十六进制代码为0x0D
LF使用'\n'符号表示, ASCII代码是10, 十六制为0x0A
Dos和windows采用回车+换行CR/LF表示下一行,
而UNIX/Linux采用换行符LF表示下一行,
苹果机(MAC OS系统)则采用回车符CR表示下一行.
所以Windows平台上换行在文本文件中是使用 0d 0a 两个字节表示, 而UNIX和苹果平台上换行则是使用0a或0d一个字节表示.
注1:关于“回车键”的来历,还得从机械英文打字机说起。在机械英文打字机上,有一个部件叫“字车”,每打一个单词,“字车”就前进一格。当打满一行字符后,
打字者就得推动“字车”到起始位置,这时打字机会有两个动作响应:一是“字车”被归位,二是滚筒上卷一行,以便开始输入下一行,这个推动“字车”的动作叫“回车”。
注2:这种差别在编程、不同OS之间传输纯文本时最需要注意。
参考了这两位博主,感谢
https://blog.csdn.net/weixin_34640289/article/details/116556550
https://mp.weixin.qq.com/s/kkpSLEiFNQR8IM1zmMcCig
发表评论
-
java 枚举values()方法
2019-07-30 20:41 375工作中,同事 ... -
newHashMapWithExpectedSize
2019-07-30 19:45 1156newHashMapWithExpectedSize VS ... -
java 8 stream应用
2019-07-15 11:43 01.生成map List<BusinessFacili ... -
技术知识点汇总
2019-02-12 15:47 01. LTS(light-task-scheduler) ... -
架构演进
2018-12-21 00:54 342一传统垂直mvc项目 垂直架构图:表示层->业务逻辑层- ... -
集群中session共享
2018-12-20 23:25 0当项目演进时,一个节点出错,如何保证域名能访问到别的节点。 一 ... -
父类子类静态代码块执行
2018-08-22 15:23 0先看一个基础面试题: package com.jbx.te ... -
数组元素的初始化
2018-07-10 17:16 456直接上代码 ,char的初始化值是'\u0000' p ... -
统计一个字符串中每个字符串出现的次数
2018-07-03 17:43 576经常遇到这个问题:总结一下 思路和代码 import ja ... -
DateUtil
2018-03-15 20:53 455记录一下常用的工具类,方便使用的时候可以获取。 pack ... -
indexOf判断一个字符串是否包含另一个字符串
2018-02-26 08:58 474jdk中的表述如下 indexOf public int in ... -
eclipse 添加反编译
2018-01-25 08:57 292为eclipse中*.clsas/*.class withou ... -
Java读取配置文件
2018-01-24 16:00 281Java读取配置文件test.properties 文件tes ... -
HTTP请求头
2017-12-29 16:49 0Request Headers 当访问一个action时,在谷 ... -
阿里巴巴Java开发手册(终极版)
2017-11-13 16:37 460前言 《阿里巴巴 Java 开发手册》是阿里巴巴集团技术团队 ... -
JavaEE 基础实用教程(二)------Jsp应用基础
2017-11-03 17:22 619习题 1.画出HTML文件的基 ... -
JavaEE 基础实用教程(一)---简述
2017-11-03 14:55 553第一部分 实用教程 第 ... -
实现普通用户登录
2017-11-03 11:09 0页面元素: 用户名,密码,验证码,登录 1.创建登录页 ... -
Java容器-- 99集
2017-10-26 14:21 0API接口 Collection Set List H ... -
自己编写一个Map
2017-10-25 15:34 517在爱酷学习网上学习Java视频,其中有一个自己实现map的功能 ...
相关推荐
linux下dos文件转unix格式,方便运行脚本,不因格式而出错误
UNIX和LINUX和DOS
经常遇到要在aix上写一些文本或者脚本,但是用vi太费劲,于是在win下写好 ...在UNIX中,每一行的结束符是换行符; 而在WINDOWS中,每一行的结束符是<RETURN>+换行符. 用以下几种办法可以将其格式互为转换.
dos2unix linux安装包, 支持各个linux操作系统,属于比较新的安装包,有需要的同学请你去吧
dos2unix命令用来将DOS格式的文本文件转换成UNIX格式的(DOS/MAC to UNIX text file format converter)。DOS下的文本文件是以\r\n作为断行标志的,表示成十六进制就是0D 0A。而Unix下的文本文件是以\n作为断行标志...
只要下载该安装包然后执行rpm -ivh unix2dos-2.2-35.el6.x86_64.rpm 以后就可以在linux下执行unix2dos命令
unix2dos/u2d unix转换成windows格式命令 dos2unix/d2u windows转换成unix格式命令 getclip 获取剪贴板内容 putclip 写入剪贴板内容
linux系统下,dos2unix安装包及安装说明
c) unix2dos #linux下的可执行文件,将linux文档转换到windows下 #命令格式:unix2dos <源文件> <目标文件> d) dos2unix #linux下的可执行文件,将windows文档转换到linux下 #命令格式:dos2unix <源文件> <目标...
用C写的程序,描述了怎样将DOS文件转化为UNIX格式的文件
unix2dos批量转换工具(双向) MS桌面版 前一版描述较不祥细,以至于很同朋友不知道可以选择多个文件拖放,故在此多啰嗦几句。 注明:1、窗口支持拖放,单文件或多文件同时拖放均可 2、新版本添加文件列表窗口中点...
文件格式转换.DOS2UNIX,就是回车换行符的转换,从\r\n到\n
dos2unix,unix2dos,mac2unix,unix2mac
使用方法:拖放要转换的文本文件至输入窗口中,选择要转换的方式(DOS2UNIX或UNIX2DOS),点转换即可直接转换 注:支持命令提示符下参数操作 功能: unix文本文件与dos文本文件相互转换 1、unix文本转DOS文本...
类unix文件拷贝到windows系统,就会丢失换行标识, windows文件拷贝到类unix系统,就会出现"^M"标识 可以用于解决Ftp上传二进制文件时没加binary, dos2unix 没加binary上传的文件. unix2dos集成在dos2unix中
结合popt可以编译出dos2unix以及unix2dos,编译时候需要添加LIBRARY_PATH,设置popt库目录。
linux中没有dos2UNIX命令怎么解决办法,dos2unix命令用来将DOS格式的文本文件转换成UNIX格式的(DOS/MAC to UNIX text file format converter)。DOS下的文本文件是以\r\n作为断行标志的,表示成十六进制就是0D 0A。...
dos2unix命令用来将DOS格式的文本文件转换成UNIX格式的
DOS文件格式转化为UNIX文件格式的C程序
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。 Linux能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承...