我使用Wikimedia API Sandbox for Japanese。
我向维基媒体发送HTTP请求,我得到一个用XML格式化的结果。 当我尝试在API Sandbox网页上发送请求并获得结果时,结果中没有字符损坏。
但是当我在Java中得到结果时,结果包括字符损坏。
我无法在XML文件中分配特定的字符代码。
如何为特定字符代码分配结果? 我该如何解决我的问题?
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db
.parse(new URL(
"http://ja.wikipedia.org/w/api.php?action=query&prop=categories&format=xml&cllimit=10&titles="
+ key).openStream());
Element root = doc.getDocumentElement();
NodeList queryList = root.getChildNodes();
Node query = queryList.item(0);
if (query instanceof Element) {
Element queryEle = (Element) query;
NodeList pagesList = queryEle.getChildNodes();
Node pgs = pagesList.item(0);
if (pgs instanceof Element) {
Element pagesElement = (Element) pgs;
NodeList pageList = pagesElement.getChildNodes();
Node page = pageList.item(0);
if (page instanceof Element) {
Element pageElement = (Element) page;
String title = pageElement.getAttribute("title");
title = new String(title.getBytes("UTF-8"), "UTF-8");
}
}
}
} catch (ParserConfigurationException e) {
} catch (SAXException e) {
} catch (IOException e) {
}
现在我发送request,我得到了一个页面标题为“大学”的结果。但在Java中,它显示“??”。
我在Android应用程序上使用上面的代码。
答案 0 :(得分:0)
title = new String(title.getBytes("UTF-8"), "UTF-8");
可以省略。
对我来说,key = 1(接收UTF-8)。我有一台UTF-8 Linux PC。也许你没有输出UTF-8上下文。尝试将Document写入文件。
你可以做更多的检查:
URLConnection connection = new URL("...").openConnection();
... connection.getContentEncoding();
... connection.getContentType();
InputStream in = connection.openStream();