echo “string” > file in Windows PowerShell appends non-printable character to the file

后端 未结 3 578
逝去的感伤
逝去的感伤 2020-12-18 06:14

In Windows PowerShell:

echo \"string\" > file.txt

In Cygwin:

$ cat file.txt
:::s t r i         


        
3条回答
  •  温柔的废话
    2020-12-18 07:03

    These two commands are equivalent in that they both use UTF-16 encoding by default:

    echo "string" > file.txt
    echo "string" | out-file file.txt
    

    You can add an explicit encoding parameter to the latter form (as indicated by jon Z) to produce plain ASCII:

    echo "string" | out-file -encoding ASCII file.txt
    

    Alternately, you could use set-content, which uses ASCII encoding by default:

    echo "string" | set-content file.txt
    

    Corollary 1:

    Want to convert a unicode file to ASCII in one line?

    Just use this:

    get-content your_unicode_file | set-content your_ascii_file
    

    which can be abbreviated to:

    gc your_unicode_file | sc your_ascii_file
    

    Corollary 2:

    Want to get a hex dump so you can really see what is unicode and what is ASCII?

    Use the clean and simple Get-HexDump function available on PowerShell.com. With that in place you can examine your generated files with just:

    Get-HexDump file.txt
    

    For anything non-trivial, you can specify how many columns wide you want the output and how many bytes of the file to process with something like this:

    Get-HexDump file.txt -width 15 -bytes 150
    

提交回复
热议问题