使用Jsoup来抓取URL,其中一个URL我一直得到有这个符号在它.我已经尝试解码的URL:
url = URLDecoder.decode(url, "UTF-8" );
但它仍然保留在代码中,如下所示:
我在网上找不到太多关于这个的信息,除了它是“对象替换字符,有时用于表示文档中的嵌入对象,当它被转换为纯文本时。”
但如果是这种情况,我应该能够打印符号,如果它是纯文本,但当我运行
System.out.println("");
我收到以下并发症错误:
并恢复到上次保存的状态。
示例URL:https://www.breightgroup.com/job/hse-advisor-embedded-contract-roles%ef%bf%bc/
注:如果您解码URL,然后将其与解码后的URL进行比较,结果显示不相同,例如:
String url = URLDecoder.decode("https://www.breightgroup.com/job/hse-advisor-embedded-contract-roles%ef%bf%bc/", "UTF-8");
if(url.contains("https://www.breightgroup.com/job/hse-advisor-embedded-contract-roles?/")){
System.out.println("The same");
}else {
System.out.println("Not the same");
}
3条答案
按热度按时间oipij1gg1#
这不是编译错误,而是Eclipse代码编辑器告诉你它不能把源代码保存到文件中,因为你已经告诉它把文件保存为cp1252编码,但是这个编码不能表达一个“”。
换句话说,您的开发环境当前配置为以cp 1252编码存储源代码,而cp 1252编码不支持您想要的字符,因此您可以配置您的开发环境以使用更灵活的编码(如错误消息中建议的UTF-8)存储源代码,或者避免在源代码中包含该字符,例如使用其unicode转义序列:
请注意,就Java语言和运行时而言,是一个字符,因此可能不需要特别“处理”它。另外,如果URL一开始就没有进行URL编码,我不知道为什么您会期望URLDecoder做任何事情。
3phpmpom2#
“ef bf bc”是一个3 bytes UTF-8 character,因此如错误所示,在“CP1252”Windows页面编码中没有该字符的表示形式。
一个选项可以是用ascii表示替换百分比编码序列,以产生用于保存的文件名:
另一个使用
CharsetDecoder
的选项测试结果
7d7tgy0s3#
我发现这个问题通过用这个符号替换URL来解决,因为还有其他带有Unicode符号的URL是不可见的,无法转换等等。
所以我只是比较了URL和下面的正则表达式,如果它返回false,那么我就绕过它。希望这能帮助一些人: