## Русская статья
## Проблемы с кодировкой в PowerShell и Python
При использовании команд в PowerShell для записи символов в файлы возникают проблемы с кодировкой, особенно когда используется символы Unicode, такие как греческая заглавная буква дельта (Δ).
### Ошибка при использовании Python
При попытке записать символ греческой заглавной буквы дельта в файл с помощью Python возникает ошибка UnicodeEncodeError из-за использования кодировок, которые не поддерживают передачу символов Unicode.
### Различия между PowerShell и WSL
При использовании команды Python в Windows Subsystem for Linux (WSL) результат оказывается корректным, в отличие от использования PowerShell в Windows.
### Важная информация об используемой кодировке
При использовании PowerShell Core v7.3.6 установлена кодировка UTF-8, которая должна обеспечивать корректное отображение символов Unicode, однако возникают проблемы при записи в файл.
## Подтекст вопроса
Автор имеет скрипт, взаимодействующий с cmd-программами и принимающий текстовый вывод для принятия решений. Один из инструментов работает в UTF-16 LE, что осложняет дальнейшую обработку результатов работы.
### Пример использования
program -parameter > resultat.txt
Под Windows 7 это кодирование кажется проблемным для работы в командной строке/batch, потому что вы не можете прочитать содержимое такого текстового файла в переменную.
Вот пример, (в этом используется только первая строка текстового файла):
```bash
set /p Var=<resultat.txt
echo %Var%
cmd /k
Также, если вы используете type для печати содержимого текстового файла, есть странное форматирование, что указывает на то, что он не обрабатывается правильно.
Get-Content -Path путь\файл.txt | Out-File -FilePath путь\новый_файл.txt -Encoding <кодировка>
Используя Notepad++, я провел некоторые исследования, какую кодировку мне нужно получить?
UTF-8 (без BOM), которая эквивалентна ANSI в Notepad, это кодирование, которое мне нужно, загрузка текстовых файлов в переменные, и команда type работают отлично, когда используется эта кодировка. Как я это понял? Если я открываю конвейерный текстовый файл в Notepad и повторно сохраняю его в кодировке ANSI, все работает отлично.
-Encoding ascii
Интересно: если я повторно сохраню конвейерный текстовый файл в Notepad как unicode, это производит файл UTF-16 LE BOM, который работает с вышеуказанным параметром преобразования, чтобы создать идеальный файл UTF-8. На этом этапе я расширил свои исследования и задал вопрос Как я могу добавить BOM к кодировке UTF-16 LE? Поскольку я мог бы сочетать такие знания с знаниями powershell. Однако, спойлер: я не смог найти приличный ответ.
-Encoding utf8
Итак, чтобы подытожить:
UTF-16 LE – Windows(CR LF) прямо в UTF-8 – Windows(CR LF)
UTF-16 LE – Windows(CR LF) в UTF-16 LE BOM – Windows(CR LF)