From 933b7cab2f72d8f133f34d66084e39369ff77970 Mon Sep 17 00:00:00 2001 From: Glavo Date: Sun, 24 Aug 2025 22:27:18 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=20URI=20=E4=B8=AD=E7=9A=84=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E4=BB=A3=E7=90=86=E5=AF=B9=E7=BC=96=E7=A0=81=E4=B8=BA?= =?UTF-8?q?=20U+FFFD=20(#4329)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/jackhuang/hmcl/util/io/NetworkUtils.java | 4 ++-- .../java/org/jackhuang/hmcl/util/io/NetworkUtilsTest.java | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/io/NetworkUtils.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/io/NetworkUtils.java index 595e53631..554ccf466 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/io/NetworkUtils.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/io/NetworkUtils.java @@ -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; } diff --git a/HMCLCore/src/test/java/org/jackhuang/hmcl/util/io/NetworkUtilsTest.java b/HMCLCore/src/test/java/org/jackhuang/hmcl/util/io/NetworkUtilsTest.java index 24841c30a..b3abc6396 100644 --- a/HMCLCore/src/test/java/org/jackhuang/hmcl/util/io/NetworkUtilsTest.java +++ b/HMCLCore/src/test/java/org/jackhuang/hmcl/util/io/NetworkUtilsTest.java @@ -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