You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何处理URL中的对象替换字符()?

处理URL中的对象替换字符(U+FFFC)问题

问题背景

用Jsoup爬取URL时遇到包含对象替换字符(\uFFFC)的链接,执行URLDecoder.decode(url, "UTF-8")解码后该字符仍存在;直接在代码中写入该字符并打印会触发编译错误;解码后的URL与预期内容不匹配(预期是带?的路径)。

示例URL编码形式:https://www.breightgroup.com/job/hse-advisor-embedded-contract-roles%ef%bf%bc/

解决方案

1. 直接替换对象替换字符

该字符的Unicode编码是\uFFFC,解码后可直接替换为预期的?,或是直接移除:

String url = URLDecoder.decode("https://www.breightgroup.com/job/hse-advisor-embedded-contract-roles%ef%bf%bc/", "UTF-8");
// 替换为预期的?
String correctedUrl = url.replace('\uFFFC', '?');
// 或者直接移除该字符
// String correctedUrl = url.replace(String.valueOf('\uFFFC'), "");

if(correctedUrl.contains("https://www.breightgroup.com/job/hse-advisor-embedded-contract-roles?/")){
    System.out.println("The same");
}else {
    System.out.println("Not the same");
}

2. 过滤所有非打印/控制字符

如果URL中可能存在其他类似异常字符,可通过正则过滤掉所有非可打印的Unicode字符:

String url = URLDecoder.decode("https://www.breightgroup.com/job/hse-advisor-embedded-contract-roles%ef%bf%bc/", "UTF-8");
// 过滤非打印字符,将其替换为?
String cleanedUrl = url.replaceAll("[^\\p{Print}]", "?");

System.out.println(cleanedUrl);
// 此时判断会匹配预期内容

3. 避免直接写入异常字符

不要在代码中直接粘贴这个字符,改用Unicode转义序列\uFFFC引用,即可避免编译错误:

// 正确引用该字符的方式
System.out.println("\uFFFC");

说明

对象替换字符(U+FFFC)通常是文档转纯文本时标记嵌入对象的占位符,URL中出现它大概率是编码错误或源网站文本转换问题。根据预期需求,替换为?或直接移除是最直接的解决方式。

内容的提问来源于stack exchange,提问作者HelloWorld

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 10:48:16