2009-06-29 17 views
33

¿Cómo puedo codificar el carácter Unicode U + 0048 (H), por ejemplo, en una cadena de PowerShell?¿Cómo codifico los códigos de caracteres Unicode en un literal de cadena de PowerShell?

En C# Simplemente haría esto: "\u0048", pero parece que no funciona en PowerShell.

+0

¿Cuál es la configuración de la codificación de salida? ($ OutputEncoding) –

+1

Somos nosotros-ascii. Pero U + 0048 debe ser codificable en eso. En realidad estoy tratando de codificar un carácter de escape (U + 001B). –

Respuesta

40

Reemplazar '\ u' con '0x', y echarlo a los System.Char:

PS > [char]0x0048 
H 

También puede usar el "$()" sintaxis para incrustar un carácter Unicode en una cadena:

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

Donde T es la representación del carácter de PowerShell para marcas comerciales no registradas.

+0

Gracias. Eso funciona. Puedo usarlo así: [char] 0x0048 + "ello", que da "Hola". –

+4

Incluso puede escribir una pequeña función: función C ($ n) {[char] [int] "0x $ n"}. Que puede usar en una cadena de la siguiente manera: "$ (C 48) ello World". No es ideal, pero probablemente esté un poco más cerca del escape. – Joey

5

Quizás esta no sea la forma de PowerShell, pero esto es lo que hago. Encuentro que es más limpio.

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