将 URI 中的错误代理对编码为 U+FFFD (#4329)

This commit is contained in:
Glavo
2025-08-24 22:27:18 +08:00
committed by GitHub
parent 885e25d07a
commit 933b7cab2f
2 changed files with 6 additions and 6 deletions

View File

@@ -186,8 +186,8 @@ public final class NetworkUtils {
}
}
// Invalid surrogate pair, encode as '?'
builder.append("%3F");
// Invalid surrogate pair, encode as U+FFFD (replacement character)
encodeCodePoint(builder, 0xfffd);
continue;
}

View File

@@ -45,10 +45,10 @@ public class NetworkUtilsTest {
assertEquals("https://www.example.com/%E6%B5%8B%E8%AF%95?a=10+20", encodeLocation("https://www.example.com/测试?a=10 20"));
// Invalid surrogate pair
assertEquals("https://www.example.com/%3F", encodeLocation("https://www.example.com/\uD83D"));
assertEquals("https://www.example.com/%3F", encodeLocation("https://www.example.com/\uDE07"));
assertEquals("https://www.example.com/%3Ftest", encodeLocation("https://www.example.com/\uD83Dtest"));
assertEquals("https://www.example.com/%3Ftest", encodeLocation("https://www.example.com/\uDE07test"));
assertEquals("https://www.example.com/%EF%BF%BD", encodeLocation("https://www.example.com/\uD83D"));
assertEquals("https://www.example.com/%EF%BF%BD", encodeLocation("https://www.example.com/\uDE07"));
assertEquals("https://www.example.com/%EF%BF%BDtest", encodeLocation("https://www.example.com/\uD83Dtest"));
assertEquals("https://www.example.com/%EF%BF%BDtest", encodeLocation("https://www.example.com/\uDE07test"));
}
@Test