2009-06-29 47 views
33

Làm cách nào để mã hóa ký tự Unicode U + 0048 (H), trong chuỗi PowerShell?Làm cách nào để mã hóa các mã ký tự Unicode trong chuỗi ký tự PowerShell?

Trong C# tôi chỉ làm điều này: "\u0048", nhưng điều đó dường như không hoạt động trong PowerShell.

+0

Mã hóa đầu ra của bạn được đặt là gì? ($ OutputEncoding) –

+1

Đó là ascii của chúng tôi. Nhưng U + 0048 nên được mã hóa trong đó. Tôi thực sự đang cố gắng mã hóa một ký tự thoát (U + 001B). –

Trả lời

40

Thay thế '\ u' với '0x' và bỏ nó vào System.Char:

PS > [char]0x0048 
H 

Bạn cũng có thể sử dụng "$()" cú pháp để nhúng một ký tự Unicode vào một chuỗi:

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

Trong đó T là đại diện của PowerShell về ký tự cho nhãn hiệu không được đăng ký.

+0

Cảm ơn. Điều đó hoạt động. Tôi có thể sử dụng nó như thế này: [char] 0x0048 + "ello", cho phép "Hello". –

+4

Bạn thậm chí có thể viết một hàm nhỏ: hàm C ($ n) {[char] [int] "0x $ n"}. Mà bạn có thể sử dụng trong một chuỗi như sau: "$ (C 48) ello World." Không lý tưởng nhưng có lẽ gần hơn một chút để thoát khỏi \ u. – Joey

5

Có lẽ đây không phải là cách PowerShell, nhưng đây là những gì tôi làm. Tôi thấy nó sạch hơn.

[regex]::Unescape("\u0048") # Prints H 
[regex]::Unescape("\u0048ello") # Prints Hello 
Các vấn đề liên quan