Я предполагаю, что это связано с форматированием UTF-8 в SPARQL ?
Посмотрев на это, вот что произошло:
- Импортер получил входные данные 'Chodovská tvrz', закодированные в utf-8.
- В utf-8 это: '43 68 6f 64 6f 76 73 6b c3 a1 20 74 76 72 7a '(c3 a1 -' á 'в utf-8)
- Импортер считывает эти байты вместо символов Unicode.
- Таким образом, вместо 'á' вы получите два символа c3 a1, которые представляют собой 'Ã' и '¡'.
Вы можете изменить это, превратив символы строки в байтовый массив, а затем создав новую строку из него. Я уверен, что должен быть более простой способ, но вот пример:
public class Convert
{
public static void main(String... args) throws Exception {
String in = "Chodovsk\u00C3\u00A1 tvrz";
char[] chars = in.toCharArray();
// make a new string by treating chars as bytes
String out = new String(fix(chars), "utf-8");
System.err.println("Got: " + out); // Chodovská tvrz
}
public static byte[] fix(char[] a) {
byte[] b = new byte[a.length];
for (int i = 0; i < a.length; i++) b[i] = (byte) a[i];
return b;
}
}
Использование этого на list.get(i).get("churchname").toString()
(что вы печатаете) исправит эти имена.
Edit:
Или просто используйте:
String churchname = list.get(i).get("churchname").toString();
String out2 = new String(churchname.getBytes("iso-8859-1"), "utf-8");
Что гораздо проще.