Domyślnie PowerShell w Windows wydaje się wyświetlać UTF-16 (np. Jeśli zrobię prosty echo hello > hi.txt
, to hi.txt
kończy się w UTF-16). Wiem, że mogę wymusić to na moim pożądanym kodowaniu tekstu, robiąc to zamiast tego echo hello | out-file -encoding utf8 hi.txt
, ale chciałbym, aby było to ustawienie domyślne, gdy używam operatora przekierowania. Czy jest jakiś sposób na osiągnięcie tego?
powershell
redirection
character-encoding
Benjamin Pollack
źródło
źródło
Odpowiedzi:
Użycie dekompilatora .NET w zestawie System.Management.Automation (inaczej „Microsoft Windows PowerShell Engine Core Assembly”) ujawnia ten fragment kodu:
Wygląda na to, że jestem zakodowany.
Do Twojej wiadomości, dotyczyło to systemu Windows 7 Enterprise x64 z zainstalowanym programem PowerShell 2.0.
źródło
CommandParameterInternal.CreateParameterWithArgument(PositionUtilities.EmptyExtent, "Encoding", "-Encoding:", PositionUtilities.EmptyExtent, "Unicode", false, false);
Nie jestem pewien, czy to zrobi dokładnie to, czego szukasz, ale możesz spróbować ustawić zmienną środowiskową, jak wspomniano tutaj
źródło
$OutputEncoding
jest to dokładnie to, czego potrzebuję; to jest ustawione na ASCII w PowerShell i wpływa na sposób wyświetlania rzeczy . Chcę zmienić format tekstu zapisanego w pliku, który (AFAICT) różni się od tego, co$OutputEncoding
kontroluje.