我的目标是将 xml 提要下载到 InputStream 中,然后将其转换为字符串,以便可以与 XmlPullParser 一起使用。
我将 InputStream 转换成这样的字符串:
InputStream input_stream = connection.getInputStream();
StringBuilder sb = new StringBuilder();
BufferedReader br = new BufferedReader(new InputStreamReader(input_stream,"UTF-8"));
while ((line = br.readLine()) != null) {
sb.append(line);
}
这就是问题所在,一些 XML 提要定义了特定的编码。以这个为例: http://voxinox.ch/podcasts/valdo/feed.xml
如果我使用默认的“UTF-8”编码,来自提要的一些字符看起来像一个带有问号的黑色菱形。如果我使用 xml header 中指定的编码,它就可以工作 (iso-8859-1),这不足为奇。
问题是在我开始读取包含编码规范的输入流之前如何决定使用什么编码?有更好的方法吗?
最佳答案
示例我如何从 XML 输入流中获取编码
FileInputStream finput = new FileInputStream(myFile);
String encoding = getInputEncoding(finput);
Log.d("Encoding: ", "> " + encoding);
public String getInputEncoding(FileInputStream finput){
String encoding = "";
if(finput!=null){
try{
BufferedReader myReader = new BufferedReader(new InputStreamReader(finput));
String getline = "";
getline = myReader.readLine();
myReader.close();
Log.d("Line: ", "> " + getline);
String[] separated = getline.split("encoding=\"");
String encoding1 = separated[1];
String[] separated2 = encoding1.split("\"");
encoding = separated2[0];
} catch (Exception e) {
}
}
return encoding;
}
关于java - 如何决定InputStream编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29246417/