xml - StreamResult - ошибка обхода пробелов - PullRequest
2 голосов
/ 23 ноября 2011

Я только что столкнулся с интересной ошибкой . Я пытался использовать user.home для сохранения пути; Дело в том, что user.home в win xp начинается с

X: \ Documents and Settings \

... уверен, что места занимают свое место. Исключение говорит

java.io.FileNotFoundException: C: \ Documents% 20 и% 20Настройки ...

... так что, как я вижу, все пробелы заменены на '%'; Я предполагаю, что это проблема кодирования, но я не совсем уверен. Страница с ошибкой «5077403» не дает обходного пути; Но я надеюсь, что должны быть некоторые?

Ответы [ 3 ]

1 голос
/ 23 ноября 2011

Попробуйте обновить версии используемых вами библиотек XML.В отчете об ошибке, на который вы ссылались, он помечен как исправленный в Java 1.5.

%, которые вы видите, на самом деле являются действительной кодировкой URL - с% 20, представляющей пробел.

Пожалуйста, ознакомьтесь также с некоторыми подробностями, которые я разместил в версиях этих библиотек, в верхней части моего личного блога по адресу http://blogger.ziesemer.com/2009/01/xml-and-xslt-tips-and-tricks-for-java.html.

0 голосов
/ 29 марта 2013

Самое простое и правильное решение этой проблемы - использование декодирования для замены системного идентификатора результатов.

streamResult.setSystemId(java.net.URLDecoder.decode(streamResult.getSystemId(), "UTF-8"));

Это расшифрует системный идентификатор и заменит% 20 пробелами.

0 голосов
/ 23 ноября 2011

Один хак (который должен работать на большинстве систем Win XP) - использовать что-то вроде этого:

String homeDir = System.getProperty("user.home");
homeDir = homeDir.replace("Documents and Settings", "DOCUME~1");

Это оставит homeDir без изменений, если код работает на Windows 7 или в среде, отличной от Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...