以下控制字符的含义是什么:
回程
换行
表格饲料
newline control-characters ansi-escape carriage-return linefeed
默认情况下,当您将命令的输出重定向到文件或将其传递到PowerShell中的其他内容时,编码为UTF-16,这是无用的.我想把它改成UTF-8.
它可以通过替换>foo.txt语法来逐个进行,| out-file foo.txt -encoding utf8但是每次都必须重复这是很尴尬的.
在PowerShell中设置内容的持久方法是将它们放入\Users\me\Documents\WindowsPowerShell\profile.ps1; 我已经验证这个文件确实是在启动时执行的.
有人说输出编码可以设置,$PSDefaultParameterValues = @{'Out-File:Encoding' = 'utf8'}但我已经尝试过,它没有任何效果.
https://blogs.msdn.microsoft.com/powershell/2006/12/11/outputencoding-to-the-rescue/谈到$OutputEncoding乍一看似乎应该是相关的,但后来谈到输出被编码在ASCII中,这不是实际发生的事情.
如何设置PowerShell使用UTF-8?
有没有人知道Windows中的一种方式(比如Powershell或工具)可以递归目录并将任何unix文件转换为Windows文件.
我对Powershell中至少检测到unix文件的方式非常满意.
对于单个文件来说,这很容易做到这一点,但我追求的是一些可扩展的东西(因此倾向于Powershellish解决方案).
编者注:根据OP后来的评论来判断,这个问题的要点是: 如何将一个带有CRLF(Windows风格)行结尾的文件转换为PowerShell中的LF-only(Unix风格)文件?
这是我的powershell脚本:
$original_file ='C:\Users\abc\Desktop\File\abc.txt'
(Get-Content $original_file) | Foreach-Object {
$_ -replace "'", "2"`
-replace '2', '3'`
-replace '1', '7'`
-replace '9', ''`
-replace "`r`n",'`n'
} | Set-Content "C:\Users\abc\Desktop\File\abc.txt" -Force
Run Code Online (Sandbox Code Playgroud)
使用此代码,我可以将3替换为2,使用空字符串替换为7和9.我只能使用换行符替换回车换行符.但这不起作用.
我正在尝试将文件的内容通过管道传输到我制作的一个简单的 ASCII 对称加密程序。这是一个简单的程序,它从 STDIN 读取输入并对输入的每个字节添加或减去某个值 (224)。例如:如果第一个字节是 4,我们要加密,那么它变成 228。如果超过 255,程序只是执行一些模运算。
这是我用 cmd 得到的输出(test.txt 包含“这是一个测试”):
type .\test.txt | .\Crypt.exe --encrypt | .\Crypt.exe --decrypt
this is a test
Run Code Online (Sandbox Code Playgroud)
它也以另一种方式工作,因此它是一种对称加密算法
type .\test.txt | .\Crypt.exe --encrypt | .\Crypt.exe --decrypt
this is a test
Run Code Online (Sandbox Code Playgroud)
但是,PowerShell 上的行为是不同的。首先加密时,我得到:
type .\test.txt | .\Crypt.exe --decrypt | .\Crypt.exe --encrypt
this is a test
Run Code Online (Sandbox Code Playgroud)
这就是我首先解密时得到的:
可能是编码问题。提前致谢。
powershell ×4
newline ×3
ansi-escape ×1
cmd ×1
encoding ×1
eol ×1
line-breaks ×1
linefeed ×1
pipe ×1
replace ×1
utf-8 ×1