【发布时间】:2022-01-31 13:31:58
【问题描述】:
我需要为 UTF-8 验证编写单元测试,但我不知道如何在 C++ 中编写不正确的 UTF-8 案例:
TEST(validation, Tests)
{
std::string str = "hello";
EXPECT_TRUE(validate_utf8(str));
// I need incorrect UTF-8 cases
}
如何在 C++ 中编写不正确的 UTF-8 案例?
【问题讨论】:
-
您可以使用十六进制或八进制转义序列,例如
str = "\200";. -
看看bit patterns 的有效二进制UTF-8。 前导位(以黑色显示)承诺一个模式。以颜色显示的位可以是任何东西。
-
除了校验位模式,还需要拒绝超长码、代理码、0x10FFFF和0xFFFE/0xFFFF以上的值。