Как преобразовать пайплайн в формат CSV и указать кодировку UTF-8

В сценарии Windows PowerShell я хочу выполнить код, который преобразует конвейер в формат CSV, а кодировка должна быть в UTF-8. Как я могу это сделать?


person user3189976    schedule 13.01.2014    source источник
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
comment
Я должен использовать | 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
comment
я не понимаю, почему вам нужно использовать converto-csv -notype | out-file encoding UTF-8 -filepath $path вместо export-csv -encoding UTF-8 -path $path. Можете ли вы объяснить разницу и почему вы используете первое вместо второго? - person Chris Rudd; 21.05.2019