我正在编写一个 UTF-16 解码例程。为了检查它是否正常工作,我需要生成带有故意编码错误的测试字符串。然而,当我尝试用 C 语言以明显的方式生成此类字符串时,编译器会拒绝我的代码,并显示“...不是有效的通用字符:”
u"\ud800" /* unmatched low surrogate */
u"\udc01\ud802" /* surrogates in wrong order */
如何生成带有故意编码错误的
u"..."
字符串?
\uXXXX
和\UXXXXXXXX
转义序列只能编码有效的通用字符。要编码其他 char16_t
值,请使用 \x...
转义序列:
u"\xd800" /* unmatched low surrogate */
u"\xdc01\xd802" /* surrogates in wrong order */