为了账号安全,请及时绑定邮箱和手机立即绑定

如何从网站 GET 请求中获取带有正确文本的字符串,避免使用特殊的 HTML 代码?

如何从网站 GET 请求中获取带有正确文本的字符串,避免使用特殊的 HTML 代码?

繁华开满天机 2023-01-05 17:12:48

我使用 GET 请求通过 HttpConnection 对象获取西班牙网站代码。当我通过控制台(网站代码)打印输出时,西班牙字符不存在。取而代之的是一些“怪异”的角色。


假设网站编码是“UTF-8”(),但我不知道它如何处理西班牙字符(á,ñ等)


我尝试了很多东西,比如在 setRequestProperty 方法中以 UTF-8 定义字符集属性,从 char 数组构建字符串,使用 UTF-8 特定编码从字节数组构建字符串,因为我在某处读到Java String 类在默认情况下以 UTF-16 构建字符串,并且没有。它仍然给我所有那些奇怪的角色。


我还使用 ISO-8859-1 编码尝试了同样的事情,结果同样糟糕,而且也没有任何编码规范。


好的,我知道这些字符确实遵循一种模式,我可以创建一个类来“翻译”它们,但我很确定在那之前还有更好的选择。


String myMethod() {


    con.setRequestMethod("GET");

    con.setRequestProperty("User-Agent", "Mozilla/5.0");

    con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");

    con.setUseCaches(false);

    con.setDoInput(true);

    reader = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));


    return reader.lines().collect(Collectors.joining("\n"));


}

这就是发生的事情的一个例子。


网站上写的那句话(我想得到):


“四季秋季防护装备”


我实际上从我的输出中得到的句子:


"Equipo de protección otoño de toda la estaciòn"


查看完整描述

1 回答

?
千巷猫影

TA贡献1557条经验 获得超7个赞

我使用了 Apache Commons ( https://mvnrepository.com/artifact/commons-lang/commons-lang/2.6 )中的 StringEscapeUtils 。


String dirty = "Equipo de protección otoño de toda la estaciòn";

String clean = StringEscapeUtils.unescapeHtml(dirty);

输出:四季秋季防护装备


希望这可以帮助。祝你好运。如果您有任何后续查询,请发表评论。


查看完整回答
反对 回复 2023-01-05

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信