<p>Remarque :</p>
<ul>
<li></li>
</ul>
<p><strong>La section <em>suivante</em> s’applique principalement a <em>Windows PowerShell</em></strong>.</p>
<ul>
<li>
<p>Consultez la <strong>section <em>d’apres</em></strong> pour l’edition multiplateforme <strong><a href="https://github.com/PowerShell/PowerShell/blob/master/README.md">PowerShell (Core) 7</a></strong>.</p>
</li>
<li></li>
</ul>
<p>Dans les deux cas, les <strong>informations s’appliquent a l’utilisation de PowerShell pour lire et ecrire des <em>fichiers</em> en UTF-8</strong>.</p>
<ul>
<li>
<p>En revanche, pour <strong>des informations sur la maniere d’envoyer et de recevoir des <em>chaines</em> encodees en UTF-8 vers et depuis des <em>programmes externes</em></strong>, consultez <a href="https://stackoverflow.com/a/49481797/45375">cette reponse</a>.</p>
</li>
<li></li>
</ul>
<p><strong>Un basculement <em>systeme</em> vers l’<em>UTF-8 sans BOM</em> est possible aujourd’hui</strong> (depuis les versions recentes de Windows 10) : consultez <a href="https://stackoverflow.com/a/57134096/45375">cette reponse</a>, mais notez les <strong>mises en garde</strong> suivantes :</p>
<ul>
<li></li>
</ul>
<p>La fonctionnalite a des <strong>consequences tres importantes</strong>, car la page de code OEM et la page de code ANSI sont alors toutes deux definies sur <code>65001</code>, c’est-a-dire UTF-8 ; de plus, la fonctionnalite est encore consideree comme une fonctionnalite <em>beta</em> au moment de la redaction (Windows 11 / Windows Server 2025 24H2).</p>
<ul>
<li>
<p>Notamment, elle <strong>peut modifier l’interpretation de fichiers preexistants sans BOM</strong>, 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.</p>
</li>
<li></li>
</ul>
<p>De plus, dans <em><strong>Windows PowerShell</strong></em>, elle <strong>ne prend effet <em>que</em> pour les cmdlets d’ecriture de fichiers qui utilisent par defaut la page de code ANSI</strong>, notamment <strong><code>Set-Content</code></strong>, et donc <strong>notamment <em>pas</em> pour <code>Out-File</code> / <code>></code></strong> ; la section du bas liste l’encodage par defaut de toutes les cmdlets.</p>
<ul>
<li>Bien que vous puissiez utiliser <code>$PSDefaultParameterValues['*:Encoding'] = 'utf8'</code>, comme explique ci-dessous, pour que <em>toutes</em> les cmdlets utilisent UTF8 par defaut, les cmdlets d’ecriture de fichiers creeront alors invariablement des fichiers UTF-8 <em>avec BOM</em> dans Windows PowerShell ; ce n’est pas un probleme dans <em>PowerShell 7</em>, qui utilise systematiquement l’UTF-8 sans BOM par defaut.</li>
</ul>
<p>La perspective <em>Windows PowerShell</em> :</p>
<ul>
<li></li>
</ul>
<p>Dans la <strong>v5.1</strong> (et egalement dans <em>PowerShell 7</em>), ou <code>></code> et <code>>></code> sont effectivement des alias de <code>Out-File</code>, vous pouvez **definir</p>
<p><em>(Reponse tronquee)</em></p>