Encodage UTF-8 (CHCP 65001) dans PowerShell

  1. Unicode dans PowerShell
  2. Modifier la locale du système pour utiliser l’encodage UTF-8 dans Windows PowerShell
  3. Définir l’encodage dans la variable $PSDefaultParameterValues pour utiliser l’encodage UTF-8 dans Windows PowerShell
  4. Utiliser la commande chcp pour passer à l’encodage UTF-8 dans Windows PowerShell
  5. Avantages de l’utilisation de l’encodage UTF-8 dans PowerShell
  6. Conclusion
Encodage UTF-8 (CHCP 65001) dans PowerShell

L’encodage UTF-8, représenté par CHCP 65001 dans PowerShell, est un outil clé pour travailler avec des caractères multilingues et spéciaux dans la console. Cet article fournira un guide complet sur la manière d’utiliser l’encodage UTF-8 dans PowerShell, de la compréhension de son importance à sa mise en œuvre pratique.

Unicode dans PowerShell

Unicode est une norme mondiale d’encodage des caractères. Il définit comment les caractères dans les fichiers texte, les pages web et d’autres documents sont représentés.

Le système informatique utilise Unicode pour manipuler les caractères et les chaînes. L’encodage par défaut dans PowerShell est Windows-1252.

Unicode a été développé pour prendre en charge les caractères de toutes les langues du monde. PowerShell prend en charge un encodage de caractères Unicode par défaut.

UTF-8 et UTF-16 sont les encodages Unicode les plus courants. PowerShell utilise toujours BOM dans tous les encodages Unicode, sauf UTF7.

Le BOM (byte-order-mark) est une signature Unicode incluse dans les premiers octets d’un fichier ou d’un flux texte qui indique l’encodage Unicode.

Comprendre l’encodage UTF-8

UTF-8 est une norme d’encodage de caractères qui utilise un encodage à largeur variable pour représenter le texte. Il est capable d’encoder pratiquement tous les caractères de l’Unicode, ce qui en fait l’encodage de caractères le plus utilisé sur Internet.

Dans le contexte de PowerShell, l’encodage UTF-8 garantit que les caractères de différentes langues, symboles et caractères spéciaux sont affichés et traités correctement dans la fenêtre de la console.

Modifier la locale du système pour utiliser l’encodage UTF-8 dans Windows PowerShell

Il existe une option pour changer la locale du système (langue actuelle pour les programmes non Unicode) dans Windows. Mais cette fonctionnalité est encore en bêta.

Accédez aux Paramètres de région à partir du Panneau de configuration ou ouvrez intl.cpl à partir du programme Exécuter (Windows+R).

changer la locale du système pour utiliser l’encodage UTF-8 dans PowerShell

Ouvrez l’onglet Administratif et cliquez sur Modifier la locale système. Ensuite, cochez l’option Bêta, comme indiqué dans l’image ci-dessous.

utiliser l’unicode UTF-8 pour le support des langues du monde entier

Après cela, appuyez sur OK et redémarrez l’ordinateur pour appliquer les paramètres.

Après avoir redémarré l’ordinateur, vous pouvez vérifier la variable $OutputEncoding pour voir l’encodage actuel.

$OutputEncoding

Sortie :

Comme vous pouvez le constater, l’encodage actuel est Unicode (UTF-8).

BodyName          : utf-8
EncodingName      : Unicode (UTF-8)
HeaderName        : utf-8
WebName           : utf-8
WindowsCodePage   : 1200
IsBrowserDisplay  : True
IsBrowserSave     : True
IsMailNewsDisplay : True
IsMailNewsSave    : True
IsSingleByte      : False
EncoderFallback   : System.Text.EncoderReplacementFallback
DecoderFallback   : System.Text.DecoderReplacementFallback
IsReadOnly        : True
CodePage          : 65001

Maintenant, vous pouvez voir les caractères d’autres langues dans PowerShell.

Get-Content test.txt

Sortie :

만나서 반가워요

Définir l’encodage dans la variable $PSDefaultParameterValues pour utiliser l’encodage UTF-8 dans Windows PowerShell

$PSDefaultParameterValues est une variable automatique intégrée dans PowerShell qui vous permet de définir des valeurs par défaut pour les paramètres des cmdlets. Cela signifie que vous pouvez spécifier des valeurs par défaut pour les paramètres des cmdlets sans avoir à les fournir explicitement chaque fois que vous utilisez le cmdlet.

Vous pouvez exécuter la commande suivante pour activer l’encodage UTF-8 dans PowerShell.

$PSDefaultParameterValues = @{'*:Encoding' = 'utf8' }

Elle n’est valable que pour la console PowerShell actuelle. Elle sera réinitialisée à la valeur par défaut après que vous ayez quitté la fenêtre PowerShell.

Get-Content test.txt

Sortie :

만나서 반가워요

Plusieurs cmdlets dans PowerShell ont le paramètre -Encoding pour spécifier l’encodage pour différents jeux de caractères. Certains d’entre eux sont Add-Content, Set-Content, Get-Content, Export-Csv, Out-File, etc.

Le paramètre -Encoding prend en charge ces valeurs : ascii, bigendianunicode, oem, unicode, utf7, utf8, utf8BOM, utf8NoBOM, utf32.

Utiliser la commande chcp pour passer à l’encodage UTF-8 dans Windows PowerShell

Pour passer à l’encodage UTF-8 dans PowerShell, utilisez la commande chcp suivie de 65001 :

chcp 65001

Cette commande indique à PowerShell d’utiliser l’encodage UTF-8 pour l’entrée et la sortie de caractères.

Voici ce que fait cette commande en détail :

  • chcp : Il s’agit d’une commande dans l’invite de commandes Windows et PowerShell. Elle signifie "Change Code Page". La page de code détermine comment les caractères sont encodés et affichés dans la fenêtre de la console.

  • 65001 : Dans ce contexte, 65001 représente la page de code pour l’encodage UTF-8. UTF-8 est un encodage de caractères à largeur variable capable d’encoder tous les caractères possibles, ou points de code, dans Unicode.

    • UTF-8 : C’est un encodage de caractères largement utilisé qui peut représenter presque tous les caractères de toutes les langues humaines. Il est particulièrement répandu sur Internet.
  • Passer à UTF-8 (65001) : Lorsque vous exécutez chcp 65001, vous indiquez à PowerShell d’utiliser l’encodage UTF-8 pour l’entrée et la sortie de caractères dans la console. Cela peut être utile lorsque vous travaillez avec des données textuelles qui incluent des caractères de différentes langues et des symboles.

    Par exemple, si vous traitez des fichiers ou des données contenant des caractères non anglais, le fait de définir la page de code sur UTF-8 garantit que ces caractères sont affichés correctement dans la console.

Réinitialisation à la page de code par défaut

N’oubliez pas que changer la page de code peut affecter le comportement de certaines applications de console, il est donc généralement judicieux de la réinitialiser à la page de code par défaut (généralement 437 pour l’anglais) lorsque vous avez fini d’utiliser UTF-8.

Pour réinitialiser la page de code à la valeur par défaut, vous pouvez utiliser la commande :

chcp 437

Cela ramènera à la page de code par défaut pour votre système, qui convient pour le texte en anglais.

Avantages de l’utilisation de l’encodage UTF-8 dans PowerShell

  1. Support multilingue : UTF-8 permet à PowerShell de gérer du texte dans plusieurs langues, garantissant l’affichage et le traitement corrects des caractères provenant de différents alphabets.
  2. Caractères spéciaux : C’est crucial lorsque l’on traite des caractères spéciaux comme des emojis ou des symboles mathématiques qui ne sont pas représentés dans les encodages standard.
  3. Gestion des fichiers : Lorsqu’on travaille avec des fichiers texte qui incluent des caractères de diverses langues, l’utilisation de UTF-8 garantit des opérations sur les fichiers précises.
  4. Traitement des données : Si vous travaillez avec des données contenant des caractères non anglais, définir la page de code sur UTF-8 garantit un traitement et une gestion corrects.

Considérations potentielles

  1. Applications console : Changer la page de code peut affecter le comportement de certaines applications de console. Réinitialisez toujours à la page de code par défaut (chcp 437 pour l’anglais) lorsque vous avez terminé d’utiliser UTF-8.
  2. Compatibilité : Assurez-vous que les programmes ou scripts que vous exécutez dans PowerShell peuvent gérer l’encodage UTF-8. Les anciennes applications peuvent ne pas le prendre en charge pleinement.

Cas d’utilisation pratiques

  1. Lecture de fichiers : Lors de la lecture de fichiers texte contenant des caractères non anglais, l’utilisation de UTF-8 garantit une représentation précise.
  2. Web scraping : Si vous extrayez du texte de sites Web qui peuvent contenir des caractères de diverses langues, UTF-8 garantit une interprétation correcte.
  3. Sorties de script : Si vos scripts génèrent des sorties avec des caractères non anglais, l’utilisation de UTF-8 garantit qu’elles sont affichées correctement.
  4. Sessions interactives PowerShell : Pour des sessions interactives où vous devez entrer ou sortir du texte avec des caractères spéciaux, l’encodage UTF-8 est inestimable.

Conclusion

L’encodage UTF-8 (CHCP 65001) dans PowerShell est un outil puissant pour gérer les caractères multilingues et spéciaux dans la console. Il permet une représentation et un traitement précis du texte provenant de diverses langues et scripts. Comprendre quand et comment utiliser l’encodage UTF-8 garantit une expérience fluide lors du travail avec des ensembles de caractères divers.

N’oubliez pas de considérer la compatibilité des programmes ou des scripts avec UTF-8 et de toujours revenir à la page de code par défaut lorsque cela est nécessaire. En tirant parti de la puissance de l’encodage UTF-8, vous serez équipé pour gérer une large gamme de données textuelles avec confiance et précision dans PowerShell.

Vous aimez nos tutoriels ? Abonnez-vous à DelftStack sur YouTube pour nous aider à créer davantage de tutoriels vidéo de haute qualité. Abonnez-vous
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website