How to convert pipeline to CSV format and specify UTF-8 encoding
58,547
Add this to the end of your pipeline:
| Export-Csv -Encoding UTF8
It's that simple.
The -Encoding parameter is available for any cmdlet that outputs to a file--Out-File, Set-Content, Add-Content, Export-Clixml, probably some others I'm not thinking of. One gotcha to watch out for is that for UTF16, you need to specify Unicode
instead of UTF16
(I think the latter makes more sense, and should at least be available as a synonym, but apparently Microsoft doesn't). The full list of options is:
Unicode,UTF7,UTF8,ASCII,UTF32,BigEndianUnicode,Default,OEM
A couple of notes:
ASCII
technically doesn't give you ASCII encoding, it gives you Windows codepage 1252 (which is based on extended ASCII and often informally referred to as ASCII).Default
gives you whichever of the other options is the system default. You can find out what the default is with[System.Text.Encoding]::Default
.
Author by
Admin
Updated on August 30, 2020Comments
-
Admin over 3 years
In a Windows PowerShell script, I want to execute code which converts a pipeline to CSV format, and encoding should be in UTF-8. How can I do this?
-
Chris Rudd almost 5 yearsi'm unclear why you would need to use
converto-csv -notype | out-file encoding UTF-8 -filepath $path
instead ofexport-csv -encoding UTF-8 -path $path
. Can you explain the difference and why you'd use the former over the latter? -
Solomon Duskis over 4 yearsI have to use
| Export-Csv -Encoding UTF8 -NoTypeInformation -Path out.csv
(about -notype)