如何在 u"..." 字符串中产生故意的编码错误?

问题描述 投票:0回答:1

我正在编写一个 UTF-16 解码例程。为了检查它是否正常工作,我需要生成带有故意编码错误的测试字符串。然而,当我尝试用 C 语言以明显的方式生成此类字符串时,编译器会拒绝我的代码,并显示“...不是有效的通用字符:”

u"\ud800" /* unmatched low surrogate */
u"\udc01\ud802" /* surrogates in wrong order */

如何生成带有故意编码错误的

u"..."
字符串?

c utf-16 string-literals
1个回答
4
投票

\uXXXX
\UXXXXXXXX
转义序列只能编码有效的通用字符。要编码其他
char16_t
值,请使用
\x...
转义序列:

u"\xd800" /* unmatched low surrogate */
u"\xdc01\xd802" /* surrogates in wrong order */
© www.soinside.com 2019 - 2024. All rights reserved.