Как кодировать коды символов Unicode в строковом литерале PowerShell?

Как я могу кодировать символ Unicode U + 0048 (H), скажем, в строке PowerShell?

В C # я бы просто сделал это:"\u0048", но это не похоже на работу в PowerShell.

 Joe Chung29 июн. 2009 г., 07:34
Какая у вас выходная кодировка? ($ OutputEncoding)
 dan-gph29 июн. 2009 г., 08:46
Это мы, аськи. Но U + 0048 должен быть кодируемым в этом. Я на самом деле пытаюсь закодировать escape-символ (U + 001B).

Ответы на вопрос(3)

PowerShell Core 6.0 добавляет поддержку с помощью следующей управляющей последовательности:

PS> "`u{0048}"
H

видетьhttps:? //docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_special_characters смотреть = 6-PowerShell # юникод-символ-UX

Решение Вопроса

\ u' на '0x' и приведите его к System.Char:

PS > [char]0x0048
H

Вы также можете использовать синтаксис «$ ()» для встраивания символа Unicode в строку:

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

Где T - представление PowerShell символа для незарегистрированных товарных знаков.

 Joey29 июн. 2009 г., 11:29
Вы даже можете написать небольшую функцию: function C ($ n) {[char] [int] "0x $ n"}. Что вы можете использовать в строке следующим образом: «$ (C 48) ello World». Не идеально, но, вероятно, немного ближе к побег
 Sonamor21 авг. 2018 г., 13:07
Это также работает, когда вы хотите передать функцию unicode [char]. Спасибо за помощь

это не способ PowerShell, но это то, что я делаю. Я считаю, что это чище.

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

Ваш ответ на вопрос