2009-06-29 15 views
33

Wie kann ich das Unicode-Zeichen U + 0048 (H) beispielsweise in einer PowerShell-Zeichenfolge codieren?Wie kodiere ich Unicode-Zeichencodes in einem PowerShell-String-Literal?

In C# würde ich nur tun: "\u0048", aber das scheint nicht in PowerShell zu funktionieren.

+0

Wofür ist die Ausgabecodierung festgelegt? ($ OutputEncoding) –

+1

Es ist uns-ascii. Aber U + 0048 sollte darin kodierbar sein. Ich versuche tatsächlich, ein Escape-Zeichen zu kodieren (U + 001B). –

Antwort

40

Ersetzen '\ u' mit '0x' und es System.Char Stimmen:

PS > [char]0x0048 
H 

Sie auch die "$()" verwenden können Syntax ein Unicode-Zeichen in eine Zeichenfolge einzubetten:

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

Dabei ist T die PowerShell-Darstellung des Zeichens für nicht eingetragene Marken.

+0

Danke. Das funktioniert. Ich kann es so verwenden: [char] 0x0048 + "ello", was "Hallo" gibt. –

+4

Sie können sogar eine kleine Funktion schreiben: function C ($ n) {[char] [int] "0x $ n"}. Welche können Sie in einer Zeichenfolge wie folgt verwenden: "$ (C 48) ello World." Nicht ideal, aber wahrscheinlich ein wenig näher an der Flucht. – Joey

5

Vielleicht ist das nicht der PowerShell-Weg, aber das ist, was ich tue. Ich finde es sauberer.

[regex]::Unescape("\u0048") # Prints H 
[regex]::Unescape("\u0048ello") # Prints Hello