В сценарии Windows PowerShell я хочу выполнить код, который преобразует конвейер в формат CSV, а кодировка должна быть в UTF-8. Как я могу это сделать?
Как преобразовать пайплайн в формат CSV и указать кодировку UTF-8
comment
Пожалуйста, примите ответ, так как это поможет людям быстро узнать, что такое рабочее решение. Первый ответ решил ту же проблему для меня.
- person Marcel Dutt   schedule 12.11.2018
Ответы (2)
Добавьте это в конец вашего конвейера:
| Export-Csv -Encoding UTF8
Это так просто.
Параметр -Encoding доступен для любого командлета, выводящего данные в файл — Out-File, Set-Content, Add- Content, Export-Clixml, возможно, некоторые другие, о которых я не думаю. Один момент, на который следует обратить внимание, заключается в том, что для UTF16 вам нужно указать Unicode
вместо UTF16
(я думаю, что последнее имеет больше смысла и должно быть по крайней мере доступно как синоним, но, по-видимому, Microsoft этого не делает). Полный список опций:
Unicode,UTF7,UTF8,ASCII,UTF32,BigEndianUnicode,Default,OEM
Пара замечаний:
ASCII
технически не дает вам кодировку ASCII, она дает вам кодовую страницу Windows 1252 (которая основана на расширенном ASCII и часто неофициально называется ASCII).Default
дает вам любой из других вариантов, который является системным по умолчанию. Вы можете узнать, что по умолчанию с[System.Text.Encoding]::Default
.
person
Adi Inbar
schedule
20.01.2014
Я должен использовать
| Export-Csv -Encoding UTF8 -NoTypeInformation -Path out.csv
(about -notype)
- person Nickolay; 05.09.2019
Invoke-Sqlcmd -ServerInstance localhost -Database "$database" -Query "$qry" -username "$username" -password "$password" | convertto-CSV -notype | out-file -encoding UTF8 -filepath $filename
Это работает в Powershell 2 и в ситуациях, когда convertto-CSV не разрешает параметр -encoding (в отличие от outfile).
person
Martin Cleaver
schedule
29.08.2017
я не понимаю, почему вам нужно использовать
converto-csv -notype | out-file encoding UTF-8 -filepath $path
вместо export-csv -encoding UTF-8 -path $path
. Можете ли вы объяснить разницу и почему вы используете первое вместо второго?
- person Chris Rudd; 21.05.2019