windows与Linux互传文件编码转换和换行符处理


编码转换

将windows文件转换成支持Linux文件的换行符号,使用Unix2dos,那么如何装换文件编码呢?

举例子

有一个文件使用Big5 编码,如何装换成UTF-8 编码呢?

iconv

sboxes@osboxes ~/D/vmware-tools-distrib> iconv --help
Usage: iconv [OPTION...] [FILE...]
Convert encoding of given files from one encoding to another.

Input/Output format specification:
 -f, --from-code=NAME       encoding of original text
 -t, --to-code=NAME         encoding for output

Information:
 -l, --list                 list all known coded character sets

Output control:
 -c                         omit invalid characters from output
 -o, --output=FILE         output file
 -s, --silent               suppress warnings
     --verbose             print progress information

 -?, --help                 Give this help list
     --usage               Give a short usage message
 -V, --version             Print program version

Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.

For bug reporting instructions, please see:
<https://bugs.launchpad.net/ubuntu/+source/eglibc/+bugs>

常用语法

iconv -f [原来编码] -t [新编码] file -o newfile

查看字符编码

file  filename

换行符转换

当把DOS文件在Linux 上打开的时候,比如:使用命令 cat -A file 我们会发现DOS换行符 ^M$ ,也被称为CR和LF两个符号。

但是在linux 上仅有LF($)一个符号表示换行符

DOS

这里为什么要提及DOS,因为DOS是微软的早期系统,并且没有图形界面,但是与 Windows系统一样,有很多相似支持,比如这里换行符,因为全是微软的出品的系统。Windows在某种程度上支持DOS。Windows操作系统的后续版本(如Windows XP、Windows 7、Windows 10等)保留了对DOS的一定程度的兼容性支持。

因此,你可以理解为这里的DOS指的是windows系统。

windows的换行符和Linux的换行符是不一样的

转换

Linux系统中,提供了命令支持两者之间的转换

dos2unix -kn file newfile 
unix2dos -kn file newfile
#含义:保留修改时间,保留源文件,转换成newfile

这里的unix,就是Linux的前身,所以这里是一脉想成的,linux发展都深受到unixminix 的影响,所以有大量相似之处。

使用

在不同系统windows和Linux 中,复制纯文本,就需要使用unix2dos 或者dos2unix 进行转换。

注意:不建议在windows上编辑好了文件后,上传到linux上,会容易发生错误。

发表评论

0 评论