0

解码结果

Unicode转义

编码结果

Unicode转义
格式
A-F

关于 Unicode 转义序列 (Unicode Escape Sequence)

将字符串转换为 Unicode 转义序列的格式。

Unicode 转义序列将 1 个字符转换为类似 \uXXXX 的 4 位十六进制码点格式。例如“あ”转换为“\u3042”。

DenCode 除了 \uXXXX 格式外,还支持以下格式的表示法的转换。

格式“ABC”的转换结果说明 / 编程语言
\uXXXX\u0041\u0042\u0043通用的 Unicode 转义序列
\u{X}\u{41}\u{42}\u{43}Lua
\x{X}\x{41}\x{42}\x{43}Perl
\X\41\42\43CSS
&#xX;ABCHTML, XML
%uXXXX%u0041%u0042%u0043百分号编码 (非标准)
U+XXXXU+0041 U+0042 U+0043码点的 Unicode 标准表示 (空格分隔)
0xX0x41 0x42 0x43码点的十六进制表示 (空格分隔)

以上几种格式在 RFC 5137 (ASCII Escaping of Unicode Characters) 中作为 BEST CURRENT PRACTICE 被提及,但并没有国际标准。

%uXXXX 格式虽然被 Microsoft IIS 支持,但是是非标准格式。虽然 C# 的 System.Web.HttpUtility.UrlEncodeUnicode 可以转换为 %u 格式,但该方法从 .NET Framework 4.5 起已不推荐使用。

请注意 \X 格式作为 CSS 的规范,在解码时后接的 1 个半角空格会被视为分隔符而被忽略。在 U+XXXX 或 0xX 格式中,编码时每个字符用半角空格分隔,解码时与 \X 格式一样,后接的 1 个连续半角空格会被忽略。

通过 Unicode 名称进行转义

作为 Unicode 转义序列,也支持通过 Unicode 名称进行转义。

格式“A”的转换结果说明 / 编程语言
\N{name}\N{LATIN CAPITAL LETTER A}C++23, Python, Perl

Unicode 名称可以在 Names List Charts - UnicodeNamesList.txt - Unicode 中确认。

Unicode 转义序列中的 Unicode BMP 范围外的字符

对于 Unicode 的非 BMP 字符,由于码点无法容纳在 4 位中,因此根据编程语言不同,使用以下格式表示。

例如“😀”(U+1F600) 的转换结果如下。

格式“😀”(U+1F600) 的转换结果编程语言
\uXXXX\uD83D\uDE00Java, Kotlin, Scala
\u{X}\u{1F600}C++23, Rust, Swift, JavaScript, PHP, Ruby, Dart, Lua
\U00XXXXXX\U0001F600C, C++, Objective-C, C#, Go, Python, R
\x{X}\x{1F600}Perl
\X\1F600CSS
&#xX;😀HTML, XML
%uXXXX%uD83D%uDE00-
U+XXXXU+1F600-
0xX0x1F600-
\N{name}\N{GRINNING FACE}C++23, Python, Perl

在 \uXXXX 和 %uXXXX 格式中,非 BMP 字符作为 UTF-16 的代理对用 2 个代码单元表示。在其他格式中,1 个字符用 1 个码点表示。