2009-06-29 17 views
33

Jak mogę kodować znak Unicode U + 0048 (H), powiedzmy, w ciągu PowerShell?Jak kodować kody znaków Unicode w dosłownym słowie programu PowerShell?

W języku C# po prostu zrobiłbym to: "\u0048", ale to nie wydaje się działać w PowerShell.

+0

Jakie jest ustawione kodowanie wyjściowe? ($ OutputEncoding) –

+1

To my-ascii. Ale U + 0048 powinno być w tym kodowalne. Próbuję kodować znak ucieczki (U + 001B). –

Odpowiedz

40

Wymienić '\ u' z '0x' i oddać go do System.Char:

PS > [char]0x0048 
H 

Można także użyć "$()" składni, aby umieścić znak Unicode na ciąg znaków:

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

Gdzie T jest reprezentacją znaku PowerShell dla niezarejestrowanych znaków towarowych.

+0

Dzięki. To działa. Mogę go użyć w następujący sposób: [char] 0x0048 + "ello", co daje "Hello". –

+4

Możesz nawet napisać małą funkcję: funkcja C ($ n) {[char] [int] "0x $ n"}. Które można użyć w ciągu znaków w następujący sposób: "$ (C 48) ello World." Nie idealne, ale prawdopodobnie trochę bliżej do ucieczki. – Joey

5

Może to nie jest sposób PowerShell, ale to właśnie robię. Uważam, że jest czystszy.

[regex]::Unescape("\u0048") # Prints H 
[regex]::Unescape("\u0048ello") # Prints Hello 
Powiązane problemy