web-dev-qa-db-fra.com

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), par exemple, dans une chaîne PowerShell?

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

43
dan-gph

Remplacez "\ u" par "0x" et convertissez-le en System.Char:

PS > [char]0x0048
H

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

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

Où T est la représentation par PowerShell du personnage pour les marques non enregistrées.

56
Shay Levy

Selon la documentation, PowerShell Core 6.0 prend en charge 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

14
mclayton

Ce n'est peut-être pas la manière 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
8
Kevin Buchan