如何从PowerShell获取换行符中的字节数?

如何从PowerShell获取换行符中的字节数?,powershell,powershell-v6.0,Powershell,Powershell V6.0,DOS/Windows换行符是两(2)个字节,0x0D0A。 UNIX/Linux换行符是一(1)个字节,0x0A。 Mac换行符是一(1)个字节,0x0D 如何编写代码来查找每个平台上换行符的长度?Windows上的输出将产生两(2)个字节,而Linux上的输出将产生一(1)个字节。在关于特殊字符的中,我没有找到任何与此相关的内容 在Windows上: PS C:\src\t> type .\nl.ps1 '`n' '`n'.Length "`n" "`n".Length Window

DOS/Windows换行符是两(2)个字节,0x0D0A。 UNIX/Linux换行符是一(1)个字节,0x0A。 Mac换行符是一(1)个字节,0x0D

如何编写代码来查找每个平台上换行符的长度?Windows上的输出将产生两(2)个字节,而Linux上的输出将产生一(1)个字节。在关于特殊字符的
中,我没有找到任何与此相关的内容

在Windows上:

PS C:\src\t> type .\nl.ps1
'`n'
'`n'.Length
"`n"
"`n".Length
Windows和Linux都返回相同的结果

PS C:\src\t> .\nl.ps1
`n
2


1
具有用于此目的的API,并且始终可从Powershell获得:

[system.environment]::newline.length
在窗户上

PS> [system.environment]::newline.length
2
在Ubuntu上

PS> [system.environment]::newline.length      
1

转义不会在字符串文字(单引号)中处理,这就是为什么第一个字符的长度为2。
length
字符串的属性将只显示字符数,而不显示字节数。实际字节数将取决于您使用的编码。例如,在Windows上使用UTF 16编码NeXLINE将占用4字节。作为一个例外,当经典的Mac OS在2001成为OS X时,它获得了UNIX基金会,此后MACOS(如它现在所知道的)已经使用了LF(<代码> 0xA < /代码>)行提要(不是过时的CR(<代码> 0xD < /代码>))。就像其他类似Unix的平台一样。在Windows上,“换行符”不是2字节。“新行”由两个字符而不是一个字符组成的序列表示。但在两个平台上,长度均为1。