出现奇怪的字符而不是“特殊”字母(á,ó,ñ,ü...)

时间:2019-11-05 19:29:38

标签: java string

类,以字符串形式从“ meneame”网页中获取特定内容

public class DownloadWeb {
private String web;

public DownloadWeb(){
try{
InputStream is = null;
BufferedReader br;
String line;

URL url = new URL ("https://www.meneame.net/");
is = url.openStream();
br = new BufferedReader(new InputStreamReader(is));


StringBuilder output2 = new StringBuilder();
while((line = br.readLine()) != null){
    output2.append(line);
}
Pattern p = Pattern.compile("<div class=\"center-content\"> *<h2> <a.{10,200} >(.{50,200})</a>");
Matcher m = p.matcher(output2);

Pattern p2 = Pattern.compile("<div class=\"news-content\">(.{100,500})</div> *</div>");
Matcher m2 = p2.matcher(output2);

StringBuilder sb = new StringBuilder();
while(m.find() && m2.find()){
    sb.append(m.group(1).replaceAll("&quot;", "") + "\n");
    sb.append(m2.group(1).replaceAll("&quot;", "")+ "\n");
}

web = sb.toString();

}catch(Exception e){};
}

public String getWeb(){return web;}

}

我对其进行测试:

System.out.println("getWeb");
DownloadWeb instance = new DownloadWeb();
System.out.println(instance.getWeb());

一切正常,我将其打印出来并正确显示。 但是,当我调试文件并检查存储的内容时,某些字符与最后一个输出不同。这是screenshot,用于说明我在说什么。

我的问题是我不能那样使用。 在另一堂课中,我将以大写字母开头的单词归为HashMap <String, Integer>(整数是该单词出现的频率)。

之所以这样做,是因为我必须实现一个接收单词的方法,并假设返回该单词的频率。 当我尝试使用带有类似``sâ€''这样的字符的单词时,它显然不起作用,因此我非常渴望这里的解决方案...就像真正的绝望ngl。

是否有一种方法可以使带有重音符号的单词不包含它们,从而不会发生这种情况?就像使所有东西都变成“普通”字母一样,而没有诸如“ñ”或“ü”之类的东西。

编辑:此post解决了我的问题。特别感谢@ xerx593的链接。

0 个答案:

没有答案