我認爲這是關係到UTF-8 formatting in SPARQL?
說完看着它這裏發生了什麼:
- 進口商輸入了 'Chodovskátvrz' 在UTF-8編碼。
- In 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()
使用這個(這是您要打印的)會解決這些名字。
編輯:
或者只是使用:
String churchname = list.get(i).get("churchname").toString();
String out2 = new String(churchname.getBytes("iso-8859-1"), "utf-8");
這要簡單得多。
我想你的意思是「進口商將這些字節替換爲iso-8859- *字符。」 – 2010-04-20 14:49:04
iso-8859- *是否對應於較低的unicode碼點?啊,它的確如此!這簡化了事情。 – user205512 2010-04-20 15:10:53