windows xp系统如何转换linux系统传过来的文本内回车换行符的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了windows xp系统如何转换linux系统传过来的文本内回车换行符的问题相关的知识,希望对你有一定的参考价值。
参考技术A sed-e
's/$/\r/'
1pnet.txt
>dos.txt
这行命令我来解释下吧、你要是没linux操作系统的知识,的确看不懂。
sed
是个工具
-e
是它的其中一个参数。's/$/\r/'
在每行结尾添加一个windows的换行符。
s
搜索
$
结尾,行末的意思
\r
windows
的换行符
因linux
和windows的换行符是不同的。
1pent.txt
是你的文件名,
>dos.txt
就是把处理完得内容覆盖添加到dos.txt
这个文件中。
你需要在1pent.txt
这个文件的目录下
执行那条命令。 参考技术B '\r'是回车,前者使光标到行首,(carriage
return)
'\n'是换行,后者使光标下移一格,(line
feed)
\r
是回车,return
\n
是换行,newline
对于换行这个动作,unix下一般只有一个0x0a表示换行("\n"),windows下一般都是0x0d和0x0a两个字符("\r\n"),苹果机(mac
os系统)则采用回车符cr表示下一行(\r)
unix系统里,每行结尾只有“<换行>”,即“\n”;
windows系统里面,每行结尾是“<回车><换行>”,即“\r\n”;
mac系统里,每行结尾是“<回车>”,即“\r”。
一个直接后果是,unix/mac系统下的文件在windows里打开的话,所有文字会变成一行;而windows里的文件在unix下打开的话,在每行的结尾会多车一个^m字符。
dos和windows采用回车+换行cr/lf表示下一行,即^m$($不是换行符的表示,换行符没有表示出来,$是文本结束eof的表示)
而unix/linux采用换行符lf表示下一行,即\n
苹果机(mac
os系统)则采用回车符cr表示下一行,即\r
cr用符号'\r'表示,
十进制ascii代码是13,
十六进制代码为0x0d;
lf使用'\n'符号表示,
ascii代码是10,
十六制为0x0a.
所以windows平台上换行在文本文件中是使用
0d
0a
两个字节表示,
而unix和苹果平台上换行则是使用0a或0d一个字节表示.
由于dos风格的换行使用\r\n,把这样的文件上传到unix,有些版本的vi不能识别\r,所以vi显示时在行尾会出现^m出来,但是有些就能识别\r\n,正常显示回车换行。
如何判断操作系统是 Windows XP 还是更高版本?
【中文标题】如何判断操作系统是 Windows XP 还是更高版本?【英文标题】:How to tell if the OS is Windows XP or higher? 【发布时间】:2011-02-13 12:23:31 【问题描述】:我正在尝试使用 Environment.OSVersion.Version
对象,但无法确定哪个版本会表明操作系统是 Windows XP 或更高版本(例如,我想排除 Windows 2000、ME 或以前的版本)。
【问题讨论】:
【参考方案1】:使用System.OperatingSystem
对象,然后过滤主要和次要版本号。
我过去使用过这些功能:
static bool IsWinXPOrHigher()
OperatingSystem OS = Environment.OSVersion;
return (OS.Platform == PlatformID.Win32NT) && ((OS.Version.Major > 5) || ((OS.Version.Major == 5) && (OS.Version.Minor >= 1)));
static bool IsWinVistaOrHigher()
OperatingSystem OS = Environment.OSVersion;
return (OS.Platform == PlatformID.Win32NT) && (OS.Version.Major >= 6);
【讨论】:
如果操作系统是 64 位,PlatformID 仍然是 Win32NT 吗? @AngryHacker PlatformID.Win32 = "操作系统是 Windows NT 或更高版本。" 所以是的。 我更改了 IsWinXp 的代码以检查它是 Windows XP 还是更高版本。与 Vista 相同。【参考方案2】:检查Major
属性是否大于或等于5,如果为5,则Minor
至少为1。(XP 为5.1,2003 为5.2,Vista/2008 为6.0)。
List of Windows Version Numbers on MSDN.
【讨论】:
注意WinXP 32位是5.1版; WinXP 64 位是 5.2 版。 这就是为什么您应该寻找您需要的东西而不是检查版本号的原因,以及为什么 Win7 是 6.1 版而不是 7.0 版的原因。检查版本号很容易出错,而且并不总是告诉你你想知道什么。【参考方案3】:您不应该检查版本号。相反,您应该检查您需要的功能。如果它是您所追求的特定 API,例如 LoadLibrary 和 GetProcAddress - 这样,您就不会依赖于版本号。
【讨论】:
鉴于依赖是他需要版本的原因,这是一个非常好的主意。 如何检查操作系统是否支持 RegFree COM? 尝试从你的清单中加载一个组件。如果不行,说明平台不支持regfree COM 我对这个特定的答案有些不知所措。例如,如果有一个特定的 API 可以(简单地)检查,那么我同意检查该 API 确实是更好的途径。但是,我需要知道是否存在特定的系统实用程序,它从 XP 更改为 Vista。我能想到的最干净的检查方法就是检查操作系统版本,而不是尝试启动一些不存在的进程并检查失败!如果我正在寻找的实用程序在版本检查后不存在,则操作系统无论如何都已损坏。 然后检查该实用程序是否存在。检查操作系统版本很容易出错,如果用户用一个版本来填充你的进程,那么检查版本并不能告诉你你想知道什么。以上是关于windows xp系统如何转换linux系统传过来的文本内回车换行符的问题的主要内容,如果未能解决你的问题,请参考以下文章
怎么在linux 系统下,禁用和启用网卡,并看状态,比如像WINDOW XP 下 本地连接,禁用,启用,连接状态,
怎么在linux 系统下,禁用和启用网卡,并看状态,比如像WINDOW XP 下 本地连接,禁用,启用,连接状态,
请问,如何在XP中用Navicat连接LINUX的MYSQL