在尝试使用Bing API进行搜索时,我收到的字符不可打印,似乎没有任何额外信息。目标是将XML(UTF-8)响应保存为稍后要解析的文本文件。
我的代码目前看起来像这样:
URL url = new URL(queryURL);
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
BufferedWriter out = new BufferedWriter(new FileWriter(query+"-"+saveResultAs));
String str = in.readLine();
out.write(str);
in.close();
out.close();
当我将'str'的内容发送到控制台时,它看起来像这样:
这是新创建的本地XML文件的样子:
我应该怎么做才能转换UTF-8文本,以便str没有额外的字符?
答案 0 :(得分:2)
如果您事先知道编码,那么
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));
和作者一样......在你的例子中写完你的文件后,在平台默认情况下进行编码,同时仍然声明为UTF-8。
从XML声明中读取编码可能是明智之举,以避免出现意外。
如果您只想存储数据供以后使用,那么无论如何都无需编码/解码。只需读取字节并将其写出即可。继续检测XML解析器的编码任务..
答案 1 :(得分:1)
XML解析器将处理编码/解码,相应的字符将反馈给您(例如,SAX解析器将通过characters()
方法回调执行此操作)。您需要做的就是将其存储在合适的文件中(可能包含合适的Byte-Order-Mark?)