我正在尝试从ftp文件夹下载内容。有一个xml文件以标准化的xml代码开头。
< ?xml version="1.0" encoding="utf-8"?>当我读取这些文件(使用java.net.Socket)并获得输入流,然后尝试转换为String时,我会得到一些新的charecter。整个xml文档以“?”开头。例如:"?< ?xml version="1.0“encoding=”utf-8“?>.”
BufferedInputStream reader = new BufferedInputStream(sock.getInputStream());然后,我将使用下面的代码从这个阅读器获得一个字符串。
StringBuilder sb = new StringBuilder();
String line;
BufferedReader br = new BufferedReader(new InputStreamReader(reader));
while ((line = br.readLine()) != null) {
sb.append(line);
}
System.out.println ("sb.toString()");不知道这里发生了什么。为什么我要介绍一些特殊的牧师?如果有什么建议,我将不胜感激。
然后,我使用了下面的代码来读取文件,在控制台中,我看到了一些特殊的牧师
BufferedReader reader = new BufferedReader(new FileReader("c:/Users/appd922/DocumentMeta06122014.xml"));
StringBuffer sb = new StringBuffer();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line);
}
String output = sb.toString();
System.out.println("reading from file"+output);我开始输出“从file< ?xml版本读取……
我从哪弄到这些特别的牧师?
注意-忽略上面给出的xml文件行中的空格。没有这个空格,我就不能用合适的not在这里写作。
发布于 2014-06-17 01:41:15
这些字符被称为BOM,Byte Order Mark。如果将InputStreamReader的编码设置为'UTF-8',则可以看到它们被解释为单个字符,即BOM字符。
不幸的是,您必须自己处理这个字符,因为Java不会为您处理这个角色:java utf-8 and bom。通常你只需要把你的溪流去掉就行了。祝好运。
发布于 2014-06-17 01:01:15
在创建InputStreamReader以从ftp读取文件时指定编码,例如:
BufferedReader br = new BufferedReader(new InputStreamReader(reader, "utf-8"));否则,InputStreamReader将使用默认编码。另外,在读取下载的文件时指定编码。FileReader使用默认平台编码。使用InputStreamReader并指定编码,例如:
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), "utf-8"));https://stackoverflow.com/questions/24254264
复制相似问题