怎么在window下把windows生成的文本文件转换成linux形式的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么在window下把windows生成的文本文件转换成linux形式的相关的知识,希望对你有一定的参考价值。

已经解决了,主要是脚本文件在linux下识别不了win下的^M,直接用二进制输入linux的回车就可以了。谢谢大家

在Windows下换行时,有两个字符:回车(/r)和换行(/n)。但在Linux下,只有一个换行(/n)
可使用unix2dos和dos2unix命令进行格式的转换:
参数:
-k 保持输出文件和输入文件的日期时间戳不变
-o file 默认模式 . 将file转换,并输出到file
-n infile outfile 新模式. 转换infile, 并输出到outfile
1. unix2dos
假设用vi新建一文本文件,输入123456
[root@centos test]# ls -l a.txt
-rw-r--r-- 1 root root 7 Jan 7 21:31 a.txt
[root@centos test]# hexdump -c a.txt
0000000 1 2 3 4 5 6 /n
0000007
[root@centos test]# unix2dos -n a.txt b.txt
unix2dos: converting file a.txt to file b.txt in DOS format ...
[root@centos test]# ls -l
total 8
-rw-r--r-- 1 root root 7 Jan 7 21:31 a.txt
-rw------- 1 root root 8 Jan 7 21:34 b.txt
[root@centos test]# hexdump -c a.txt
0000000 1 2 3 4 5 6 /n
0000007
[root@centos test]# hexdump -c b.txt
0000000 1 2 3 4 5 6 /r /n
0000008
b.txt是转换后的DOS下的文件
2. dos2unix
[root@centos test]# dos2unix -n b.txt c.txt
dos2unix: converting file b.txt to file c.txt in UNIX format ...
[root@centos test]# ls -l
total 12
-rw-r--r-- 1 root root 7 Jan 7 21:31 a.txt
-rw------- 1 root root 8 Jan 7 21:34 b.txt
-rw------- 1 root root 7 Jan 7 21:38 c.txt
[root@centos test]# hexdump -c b.txt
0000000 1 2 3 4 5 6 /r /n
0000008
[root@centos test]# hexdump -c c.txt
0000000 1 2 3 4 5 6 /n
0000007
c.txt是转换后unix下的文本文件
参考技术A 文本在两个系统下通用的,无非两个问题:1 编码,2 换行

给你在Linux的两个命令解决:
iconv 转换编码
#iconv -f gbk -t utf8 filename

dos2unix 转换换行
#dos2unix filename本回答被提问者和网友采纳
参考技术B 每个文本传输或者文本编辑软件,对这个定义都不一样。容易搞错。
最好的办法就是,在你windows的txt通过ctr+c, 然后在linux终端那里vi编辑文件,然后ctr+v
参考技术C 找个工具比如UE,打开后另存,选UTF-8编码,;linux换行符 参考技术D 什么意思?不是通用的吗?我在ubuntu下依旧可以打开windows的文件啊

使用在 windows 2000 中运行的 PHP 使用 mozilla 版本 10 生成带有新行的文本文件

【中文标题】使用在 windows 2000 中运行的 PHP 使用 mozilla 版本 10 生成带有新行的文本文件【英文标题】:Generate text file with new line using PHP running in windows 2000 using mozilla version 10 【发布时间】:2020-03-07 16:28:59 【问题描述】:

我正在使用 PHP 生成一个文本文件,该文件用于装有 windows 2000 操作系统和 mozilla firefox 浏览器的计算机(请不要问为什么)。该文件在 windows 10 和最新版本的火狐上正确生成并运行流畅。

我现在的问题是新行在旧版本(windows 2000 OS 和 firefox 10)中不渲染

我试过用ff:

1. /n
2. /r/n
3. <br>
4. $string = "This\r\nis\n\ra\nstring\r"; echo nl2br($string);
5. PHP_EOL

所有都没有生成所需的输出。它只是将 BR 附加为文本

代码是:

header("Content-Type: text/html; charset=UTF-8"); 
header("Content-Type: multipart/form-data; boundary=something");  
header("Content-Length: ".strlen($data).""); 
header("Content-Disposition: attachment; filename=".$_GET['name'].""); 
echo nl2br(base64_decode($data));

示例文本为:"Assembly Lot Summary Report " . "\r\n" . "\r\n" ;

FYI : Notepad(only) 用于打开文本文件

【问题讨论】:

添加最小的 HTML 结构:&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;your text here&lt;/body&gt;&lt;/html&gt;。首先创建静态文件会有所帮助。也许浏览器会漏检。 @DanielSęk 它适用于较新的操作系统和 mozilla firefox 版本。新行按预期添加。我唯一的假设是因为 mozilla 和操作系统的版本太旧了 您想为记事本生成纯文本文件(在这种情况下使用nl2br 没有意义)或HTML 文件以在浏览器中打开(在这种情况下&lt;br&gt; 将被正确解释) . 不幸的是要求是使用记事本 确保生成的文件有\r\n 行结束。较旧的记事本(例如在 Windows XP 中)无法正确处理仅以 \n 结尾的行尾。使用@Jimmix 所写的text/plain,不要使用nl2br。使用十六进制编辑器查找生成的行尾。您还可以手动转换行尾(取决于客户端计算机)并将文件作为application/octet-stream(二进制流)发送。 【参考方案1】:

如果您想在文本编辑器中按回车键时以相同的方式换行,那么标题应该是:

Content-Type: text/plain

而不是

Content-Type: text/html;

因此网络浏览器确切地知道您要传递一个文本文件。

您可以通过检查页面源来仔细检查新行是否返回到浏览器 - 转到菜单 > 编辑 > 查看源或点击 CTR+U

我也会尝试删除这一行:

header("Content-Type: multipart/form-data; boundary=something");

看看有没有帮助。

为了从 php 生成新行,你可以使用:

echo "\n";

echo PHP_EOL;

它将为您提供取决于 Web 服务器 操作系统的新产品线 - 对于 Linux 和 Windows 不同。

这些在 PHP 中是不正确的:/r/n。您需要使用反斜杠,并且它们仅在使用双引号“\n”more read 时才有效。

更多阅读text/plain

【讨论】:

我没有使用文本的原因是因为使用 时它只会输出 我使用\n。还是没用

以上是关于怎么在window下把windows生成的文本文件转换成linux形式的的主要内容,如果未能解决你的问题,请参考以下文章

在windows下把Mongodb设置系统服务

怎么用PuTTY工具在Linux系统下把压缩文件解压到指定目录文件夹下?怎么写语句?

通过nssm在windows系统下把jar包打包成服务

使用在 windows 2000 中运行的 PHP 使用 mozilla 版本 10 生成带有新行的文本文件

【求助】怎么转TIF格式的文件??

从linux下载txt到windows,怎么在直接打开文本文件的时候实现换行?