Java-Html特殊字符
我想对HTML文件提出一些XPath请求。这是我的密码:Java-Html特殊字符,java,html,xpath,utf-8,htmlcleaner,Java,Html,Xpath,Utf 8,Htmlcleaner,我想对HTML文件提出一些XPath请求。这是我的密码: public static void main(String args[]) { try{ /** We load the HTML file we want to parse */ BufferedReader br = new BufferedReader(new InputStreamReader (new FileInputStream("html_doyoubuzz.html"),
public static void main(String args[]) {
try{
/** We load the HTML file we want to parse */
BufferedReader br = new BufferedReader(new InputStreamReader (new FileInputStream("html_doyoubuzz.html"),"UTF-8"));
/** we clean HTML file */
TagNode tagNode = new HtmlCleaner().clean(br);
Document doc2 = new DomSerializer( new CleanerProperties() ).createDOM(tagNode);
/******************************
* *
* XPath Requests *
* *
******************************/
XPath xpath = XPathFactory.newInstance().newXPath();
Object dates_experience = xpath.evaluate("/html/body/div[3]/div/div/div[2]/div/div/div[2]/div[4]/div/div[3]/h4/span[2]", doc2, XPathConstants.NODESET);
NodeList nodes = (NodeList) dates_experience;
String s;
for (int i = 0; i < nodes.getLength(); i++) {
s = org.apache.commons.lang3.StringEscapeUtils.unescapeHtml4(nodes.item(i).getTextContent());
System.out.println(s);
}
}
catch (Exception e){//Catch exception if any
e.printStackTrace();
}
}
而不是我想要的输出:
décembre 2010 - décembre 2010)
février 2010 - juin 2010)
juillet 2009 - septembre 2009)
juin 2009 - juin 2009)
juillet 2008 - août 2008)
你有办法解决这个问题吗
谢谢。如果您是指java控制台中的输出,您可以更改控制台编码。控制台编码是默认的操作系统编码。您可以在eclipse中更改下面的链接 如果不使用eclipse,可以为windows添加系统参数
-Dfile.encoding=utf-8
你也可以试试
System.setOut(new PrintStream(System.out, true, "utf-8"));
如果您指的是java控制台中的输出,那么可以更改控制台编码。控制台编码是默认的操作系统编码。您可以在eclipse中更改下面的链接 如果不使用eclipse,可以为windows添加系统参数
-Dfile.encoding=utf-8
你也可以试试
System.setOut(new PrintStream(System.out, true, "utf-8"));
我终于找到了答案 我用hexEdit打开了我的html文件,看到了一些奇怪的字节:“EFBFBD”
这是因为我右键单击/复制/粘贴了html代码。我不得不改变加载html文件的方式 我终于找到了答案 我用hexEdit打开了我的html文件,看到了一些奇怪的字节:“EFBFBD”
这是因为我右键单击/复制/粘贴了html代码。我不得不改变加载html文件的方式 您确定HTML文件是UTF-8吗?我的意思是,windows在保存文件时默认使用自己的编码。Eclipse本身默认使用这种编码,我怎么能确定呢?顺便说一下,meta标记表示字符集是UTF-8。如果您使用的是eclipse,并且HTML文件在项目中,您可以在explorer视图中选择该文件,然后按alt+Enter(或者右键单击并选择属性)。它将打开一个窗口,您可以在其中检查文本编码。beta标签是您声明将要使用的编码的方式,但它并不强制操作系统使用它。责任在你,我检查过了。使用UTF-8。这里有(至少)两个独立的问题:(a)程序发出的字节数,以及(b)在某些程序中查看数据时数据的外观(包括程序配置使用的编码和字体)。要分离这些问题,最好将输出发送到文件,然后使用十六进制编辑器检查文件中的字节。然后你就会知道失败是在(a)还是(b)中。你确定HTML文件是UTF-8吗?我的意思是,windows在保存文件时默认使用自己的编码。Eclipse本身默认使用这种编码,我怎么能确定呢?顺便说一下,meta标记表示字符集是UTF-8。如果您使用的是eclipse,并且HTML文件在项目中,您可以在explorer视图中选择该文件,然后按alt+Enter(或者右键单击并选择属性)。它将打开一个窗口,您可以在其中检查文本编码。beta标签是您声明将要使用的编码的方式,但它并不强制操作系统使用它。责任在你,我检查过了。使用UTF-8。这里有(至少)两个独立的问题:(a)程序发出的字节数,以及(b)在某些程序中查看数据时数据的外观(包括程序配置使用的编码和字体)。要分离这些问题,最好将输出发送到文件,然后使用十六进制编辑器检查文件中的字节。然后你就会知道失败是在(a)还是(b)中。如果我做你的第一个解,我得到这个:d�cembre 2010-d�2010年10月)。如果我执行system.setout,我会得到以下结果:dë½cembre 2010-dë½cembre 2010)另外,我试图将输出写入一个文件,但我遇到了相同的问题:(我的建议是打印到java控制台。如果你想提交我的建议,我的建议对你不起作用。在你的问题中,这个新的文件输入流(“html_doyoubuzz.html”),“UTF-8”)应该足够了。如果我做你的第一个解,我得到这个:d�cembre 2010-d�2010年10月)。如果我执行system.setout,我会得到以下结果:dë½cembre 2010-dë½cembre 2010)另外,我试图将输出写入一个文件,但我遇到了同样的问题:(我的建议是打印到java控制台。如果你想提交我的建议,我的建议对你不起作用。在你的问题中,这个新的FileInputStream(“html_doyoubuzz.html”),“UTF-8”)应该足够了。