Changer l’encodage de sortie par defaut de PowerShell en UTF-8
Source : Stack Overflow [powershell]**.)
Changer l’encodage de sortie par defaut de PowerShell en UTF-8
Source : Stack Overflow [powershell]**.)
Remarque :
La section suivante s’applique principalement a Windows PowerShell.
Consultez la section d’apres pour l’edition multiplateforme PowerShell (Core) 7.
Dans les deux cas, les informations s’appliquent a l’utilisation de PowerShell pour lire et ecrire des fichiers en UTF-8.
En revanche, pour des informations sur la maniere d’envoyer et de recevoir des chaines encodees en UTF-8 vers et depuis des programmes externes, consultez cette reponse.
Un basculement systeme vers l’UTF-8 sans BOM est possible aujourd’hui (depuis les versions recentes de Windows 10) : consultez cette reponse, mais notez les mises en garde suivantes :
La fonctionnalite a des consequences tres importantes, car la page de code OEM et la page de code ANSI sont alors toutes deux definies sur 65001, c’est-a-dire UTF-8 ; de plus, la fonctionnalite est encore consideree comme une fonctionnalite beta au moment de la redaction (Windows 11 / Windows Server 2025 24H2).
Notamment, elle peut modifier l’interpretation de fichiers preexistants sans BOM, y compris le code source, s’ils contiennent des caracteres non-ASCII, par n’importe quelle application (pas seulement PowerShell), car ils sont alors (potentiellement mal) decodes en UTF-8.
De plus, dans Windows PowerShell, elle ne prend effet que pour les cmdlets d’ecriture de fichiers qui utilisent par defaut la page de code ANSI, notamment Set-Content, et donc notamment pas pour Out-File / > ; la section du bas liste l’encodage par defaut de toutes les cmdlets.
$PSDefaultParameterValues['*:Encoding'] = 'utf8', comme explique ci-dessous, pour que toutes les cmdlets utilisent UTF8 par defaut, les cmdlets d’ecriture de fichiers creeront alors invariablement des fichiers UTF-8 avec BOM dans Windows PowerShell ; ce n’est pas un probleme dans PowerShell 7, qui utilise systematiquement l’UTF-8 sans BOM par defaut.La perspective Windows PowerShell :
Dans la v5.1 (et egalement dans PowerShell 7), ou > et >> sont effectivement des alias de Out-File, vous pouvez **definir
(Reponse tronquee)