我正在尝试清理通过 SPARQL 查询获得的以下链接的页面内容:
http://www.rechercheisidore.fr/sparql/query?query=PREFIX+dcterms%3A+%3Chttp%3A%2F%2Fpurl.org%2Fdc%2Fterms%2F%3E+PREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E+SELECT+%3Furicollection+%3Ftitrecollection+%3Fdescription+%3Fadresseweb+WHERE+{+%3Furicollection+%3Fpredicat+%3Chttp%3A%2F%2Fwww.rechercheisidore.fr%2Fclass%2FCollection%3E.+%3Furicollection+dcterms%3Atitle+%3Ftitrecollection.+%3Furicollection+dcterms%3Adescription+%3Fdescription.+%3Furicollection+foaf%3Ahomepage+%3Fadresseweb.+}+ORDER+BY+ASC%28%3Ftitrecollection%29+LIMIT+300&format=application%2Frdf%2Bxml
该页面是法语的。每个带有重音符号的字母都没有正确显示,当试图用 Python 中的好字符替换字符时,它会返回错误。我试图将文件转换为 UTF-8,但这并没有解决任何问题(实际上它已经在 utf-8 中)因此出现了困惑的想法(该网站的一名工程师确认这是他们三重商店中的一个错误).一个示例:您应该看到 é 而不是 é。
我想要一个文件,我至少可以使用 python 2.7 str.replace() 函数来取回正确的字符——或者有更好的方法来实现这个?
演示问题的 RDF XML 文件示例:
<rdf:RDF xmlns:res="http://www.w3.org/2005/sparql-results#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:nodeID="rset">
<rdf:type rdf:resource="http://www.w3.org/2005/sparql-results#ResultSet" />
<res:resultVariable>uricollection</res:resultVariable>
<res:resultVariable>titrecollection</res:resultVariable>
<res:resultVariable>description</res:resultVariable>
<res:resultVariable>adresseweb</res:resultVariable>
<res:solution rdf:nodeID="r0">
<res:binding rdf:nodeID="r0c0"><res:variable>uricollection</res:variable><res:value rdf:resource="http://www.rechercheisidore.fr/resource/10670/3.ewe76u"/></res:binding>
<res:binding rdf:nodeID="r0c1"><res:variable>titrecollection</res:variable><res:value>Actualités de l'Ecole des Hautes Etudes en Sciences Sociales</res:value></res:binding>
<res:binding rdf:nodeID="r0c2"><res:variable>description</res:variable><res:value>L'Ãcole des hautes études en sciences sociales (EHESS), est issue de la transformation, en 1975, de la sixième section de l'Ãcole pratique des hautes études, section de sciences économiques et sociales, fondée en 1947 par Lucien Febvre, Charles Morazé et Fernand Braudel. L'EHESS occupe une place singulière dans le paysage français de la recherche. Elle forme des docteurs dans toutes les disciplines des sciences humaines et sociales, mais elle n'est pas une université.</res:value></res:binding>
<res:binding rdf:nodeID="r0c3"><res:variable>adresseweb</res:variable><res:value rdf:resource="http://www.ehess.fr"/></res:binding>
</res:solution>
请您参考如下方法:
该页面的问题似乎是服务器将文本编码为 UTF-8,然后将 UTF-8 视为 Latin-1,并再次将其编码为 UTF-8。要扭转这一局面,请以 UTF-8 格式读取文件,将其编码为 Latin-1 字节字符串,然后将字节解码为 UTF-8。
