Я разрабатываю приложение, работающее на устройствах Android и iOS. Для этого приложения мне нужно получить XML-поток из URL-адреса. Этот XML не очень безопасно, потому что некоторые строки, например:Почему Java BufferedReader не работает как NSData Objective-C?
Откровении
Станет:
Rvlation
Конечно Я знаю, что лучше всего исправить скрипт генератора XML. Но я работаю только разработчиком фирмы и не имею к ней доступа, поэтому на данный момент я стараюсь делать все, что в моих силах, с тем, что у меня есть.
Теперь вот почему в этой теме. Когда я положил эти данные в объект NSData Объективный-C в:
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 значение полукокса, особый характер или нет. Тогда я просто должен обработать (unichar)byteData[i]
, чтобы решить эту проблему.
Нет с Java и Android, я пытаюсь выполнить базовую операцию BufferedReader.
URL myURL = new URL(url);
BufferedReader in = new BufferedReader(new InputStreamReader(myURL.openStream()));
Затем распечатайте каждый Char ИНТ один за другим:
int i;
while((i = in.read()) != -1) System.out.print(i);
Но с Java, делая это, я сразу же получить идентификатор замещающего Чара (65533) вместо хорошей, и не может удастся заменить его.
Любая идея? Спасибо, что прочитал меня.
В Java нет необходимости создавать «BufferedReader» для чтения XML. Запустите синтаксический анализатор XML непосредственно в 'InputStream', он сам обработает кодировку. – Sulthan