Comment encoder des codes de caractères Unicode dans un littéral de chaîne PowerShell?

Comment puis-je encoder le caractère Unicode U + 0048 (h), disons, dans une chaîne PowerShell?

En C# je ferais simplement ceci: "u0048", mais cela ne semble pas fonctionner dans PowerShell.

37
demandé sur Peter Mortensen 2009-06-29 09:32:19

3 réponses

Remplacez '\ u ' par ' 0x ' et lancez-le dans System.Char:

PS > [char]0x0048
H

Vous pouvez également utiliser la syntaxe "$ () " pour intégrer un caractère Unicode dans une chaîne:

PS > "Acme$([char]0x2122) Company"
AcmeT Company

Où T est la représentation du caractère de PowerShell pour les marques non enregistrées.

47
répondu Shay Levy 2017-01-03 20:36:03

Selon la documentation, PowerShell 6.0 ajoute le support avec cette séquence d'échappement:

PS> "`u{0048}"
H

Voir https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_special_characters?view=powershell-6#unicode-character-ux

7
répondu mclayton 2018-03-20 10:34:17

Peut-être que ce N'est pas la façon PowerShell, mais c'est ce que je fais. Je trouve que c'est plus propre.

[regex]::Unescape("\u0048") # Prints H
[regex]::Unescape("\u0048ello") # Prints Hello
5
répondu Kevin Buchan 2017-01-03 20:39:29