为什么Java的BufferedReader不能像Objective-C的NSData那样工作?

为什么Java的BufferedReader不能像Objective-C的NSData那样工作?,java,objective-c,encoding,nsdata,bufferedreader,Java,Objective C,Encoding,Nsdata,Bufferedreader,我正在开发一个运行在Android和iOS设备上的应用程序。对于这个应用程序,我需要从URL获取XML流。此XML不是真正安全的,因为有些行,例如: Révélation 将成为: R�v�激化 当然,我知道最好的办法是修复XML生成器脚本。但我只是作为一家公司的开发人员工作,没有访问权限,所以目前我正试图用我所拥有的做我能做的 下面是这个话题的原因。当我将此数据放入Objective-C的NSData对象中时: NSData *data = [[NSData alloc] initWithCo

我正在开发一个运行在Android和iOS设备上的应用程序。对于这个应用程序,我需要从URL获取XML流。此XML不是真正安全的,因为有些行,例如:

Révélation

将成为:

R�v�激化

当然,我知道最好的办法是修复XML生成器脚本。但我只是作为一家公司的开发人员工作,没有访问权限,所以目前我正试图用我所拥有的做我能做的

下面是这个话题的原因。当我将此数据放入Objective-C的NSData对象中时:

NSData *data = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:url]];
然后尝试读取每个字节:

NSUInteger len = [data length];
Byte *byteData = (Byte*)malloc(len);
memcpy(byteData, [data bytes], len);
for(int i = 0 ; i < len ; i++)
{
    NSLog(@"%d",byteData[i]);
}
然后逐个打印每个字符的int:

int i;
while((i = in.read()) != -1) System.out.print(i);
但是对于Java,通过这样做,我立即得到替换字符的id 65533,而不是好的,并且无法替换它

有什么想法吗?谢谢你读我的书

BufferedReader in = new BufferedReader(
        new InputStreamReader(myURL.openStream(), "UTF-8"));
输入流用于字节、二进制数据

读卡器用于字符、字符串和文本

InputStreamReader弥补了这一概念上的差异,指出二进制数据采用的是哪种编码,并且具有一个可选的编码参数。默认编码是当前平台的编码,因此不太便于移植

输入流用于字节、二进制数据

读卡器用于字符、字符串和文本


InputStreamReader弥补了这一概念上的差异,指出二进制数据采用的是哪种编码,并且具有一个可选的编码参数。默认编码是当前平台的编码,因此不太便于移植。

在Java中,不需要创建用于读取XML的BufferedReader。直接在InputStream上运行XML解析器,它将自己处理编码。直接在InputStream上运行XML解析器,它将自行处理编码。
BufferedReader in = new BufferedReader(
        new InputStreamReader(myURL.openStream(), "UTF-8"));