2009-06-29 6 views
33

Comment puis-je coder le caractère Unicode U + 0048 (H), disons, dans une chaîne PowerShell?Comment encoder des codes de caractères Unicode dans un littéral de chaîne PowerShell?

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

+0

À quoi correspond votre encodage de sortie? ($ OutputEncoding) –

+1

C'est nous-ascii. Mais U + 0048 devrait être encodable en cela. J'essaie en fait d'encoder un caractère d'échappement (U + 001B). –

Répondre

40

Remplacer '\ u' avec '0x' et le jeter aux System.Char:

PS > [char]0x0048 
H 

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

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

Où T est la représentation du caractère par PowerShell pour les marques non déposées.

+0

Merci. Ça marche. Je peux l'utiliser comme ceci: [char] 0x0048 + "ello", qui donne "Hello". –

+4

Vous pouvez même écrire une petite fonction: la fonction C ($ n) {[char] [int] "0x $ n"}. Que vous pouvez utiliser dans une chaîne comme suit: "$ (C 48) ello World." Pas idéal mais probablement un peu plus près de l'évasion. – Joey

5

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 
Questions connexes