C#中的\U转义序列
The \U Escape Sequence in C#
我正在试验转义序列,不能真正使用 \U 序列 (UTF-32)
它不会编译,因为它出于某种原因无法识别序列。
它将其识别为 UTF-16。
你能帮帮我吗?
Console.WriteLine("\U00HHHHHH");
您的问题是您从文档页面 \U00HHHHHH
复制了 Strings (C# Programming Guide): String Escape Sequences:
但是 \U00HHHHHH
本身不是有效的 UTF-32 转义序列 -- 它是一个 掩码 ,其中每个 H
表示 Hex 字符必须键入。它无效的原因是十六进制数由数字 0-9 和字母 A–F 或 a–f 组成——而 H
不是这些字符之一。注释中提到的文字 "\U001effff"
不起作用,因为它超出了文档中紧随其后指定的有效 UTF-32 字符值的范围:
(range: 000000 - 10FFFF; example: \U0001F47D
= "")*
c# 编译器根据这些规则实际检查指定的 UTF-32 字符是否有效:
// These compile because they're valid Hex numbers in the range 000000 - 10FFFF padded to 8 digits with leading zeros:
Console.WriteLine("\U0001F47D");
Console.WriteLine("\U00000000");
Console.WriteLine("\U0010FFFF");
// But these don't.
// H is not a valid Hex character:
// Compilation error (line 16, col 22): Unrecognized escape sequence
Console.WriteLine("\U00HHHHHH");
// This is outside the range of 000000 - 10FFFF:
// Compilation error (line 19, col 22): Unrecognized escape sequence
Console.WriteLine("\U001effff");
见https://dotnetfiddle.net/KezdTG。
顺便说一句,要在 Windows 控制台中正确显示 Unicode 字符,请参阅 How to write Unicode characters to the console?.
我正在试验转义序列,不能真正使用 \U 序列 (UTF-32) 它不会编译,因为它出于某种原因无法识别序列。 它将其识别为 UTF-16。
你能帮帮我吗?
Console.WriteLine("\U00HHHHHH");
您的问题是您从文档页面 \U00HHHHHH
复制了 Strings (C# Programming Guide): String Escape Sequences:
但是 \U00HHHHHH
本身不是有效的 UTF-32 转义序列 -- 它是一个 掩码 ,其中每个 H
表示 Hex 字符必须键入。它无效的原因是十六进制数由数字 0-9 和字母 A–F 或 a–f 组成——而 H
不是这些字符之一。注释中提到的文字 "\U001effff"
不起作用,因为它超出了文档中紧随其后指定的有效 UTF-32 字符值的范围:
(range: 000000 - 10FFFF; example:
\U0001F47D
= "")*
c# 编译器根据这些规则实际检查指定的 UTF-32 字符是否有效:
// These compile because they're valid Hex numbers in the range 000000 - 10FFFF padded to 8 digits with leading zeros:
Console.WriteLine("\U0001F47D");
Console.WriteLine("\U00000000");
Console.WriteLine("\U0010FFFF");
// But these don't.
// H is not a valid Hex character:
// Compilation error (line 16, col 22): Unrecognized escape sequence
Console.WriteLine("\U00HHHHHH");
// This is outside the range of 000000 - 10FFFF:
// Compilation error (line 19, col 22): Unrecognized escape sequence
Console.WriteLine("\U001effff");
见https://dotnetfiddle.net/KezdTG。
顺便说一句,要在 Windows 控制台中正确显示 Unicode 字符,请参阅 How to write Unicode characters to the console?.