Domanda

Io uso Teradata e il seguito delle uscite di query "Altlüd" quando viene eseguito utilizzando un client Teradata.

select name as name  from MYTABLE where selector=?

considerando che, ottengo "Altl? D" come l'uscita quando si tenta di eseguire la query utilizzando un client JDBC (Java con Teradata driver). Sto usando "UTF-8" charset e ho anche provato charset latina senza fortuna.

Inoltre ho provato questo per risolvere i problemi.

while (rs.next()) {
 System.out.println(rs.getString(1));
 Reader rd = rs.getCharacterStream(1);
 int charr = rd.read();
 while (charr >= 0) {
    System.out.println(charr + " = " + ((char) charr));
    charr = rd.read();
 }
}

E l'uscita è

Altl? Dersdorf 65 = A 108 = l 116 = t 108 = l 65533 =? 100 = d

Se si guarda l'output prodotto, il valore int per il carattere SPL è 65533, che non dovrebbe essere il caso.

Infatti restituisce 65533 per tutti i caratteri speciali.

Eventuali indizi / puntatori sarà apprezzato. Grazie !!!

È stato utile?

Soluzione

Sembra essere il carattere di sostituzione U+FFFD Unicode. client JDBC e il server non utilizzano la stessa codifica per i caratteri. Il cliente sembra provare UTF-8, ma il server non offre alcuna formato non UTF.

Non so Teradata, ma si dovrebbe cercare eventuali impostazioni del database e del server o per la codifica e / o locale.

Altri suggerimenti

Prova ad utilizzare charset = UTF-16 come parametro di lato client.

Un modo semplice è quello di impostare LC_ALL = LANG = en_US.UTF-16 e quindi eseguire il programma Java.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top