Это проблема:
BufferedReader br = new BufferedReader(
new InputStreamReader(new FileInputStream(file)));
while ((line = br.readLine()) !=null) {
sb.append(line);
}
Это чтение файла с кодировкой платформы по умолчанию. Если кодировка неправильная, вы будете неправильно читать данные.
То, что вы должны сделать, это позволить анализатору XML обработать его для вас. Он должен быть в состоянии определить саму кодировку на основе первой строки данных.
Я не знаком с XmlSlurper
, но я бы ожидал, что либо сможет анализировать входной поток (в этом случае просто укажите FileInputStream
) или обрабатывать имя самого файла.