我使用teradata,并且在使用teradata客户端运行时,以下查询输出“Altlüd”。
select name as name from MYTABLE where selector=?
[当我尝试使用Java客户端(带有teradata驱动程序的jdbc)执行查询时,输出为“ Altl?d”。我正在使用“ UTF-8”字符集,也没有运气尝试过拉丁字符集。
我也尝试过进行故障排除。
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();
}
}
输出为
Altl?dersdorf65 = A108 = l116 = t108 = l65533 =?100 = d
如果查看生成的输出,则spl字符的int值为65533,实际情况并非如此。
事实上,它会为所有特殊字符返回65533。
任何线索/指针将不胜感激。谢谢!!
我使用teradata,当使用teradata客户端运行时,以下查询输出“Altlüd”。从MYTABLE中选择名称作为名称,其中选择器=?而当我尝试执行...时,将得到“ Altl?d”作为输出...
似乎是Unicode替换字符U+FFFD
。 JDBC客户端和服务器对字符使用不同的编码。客户端似乎尝试使用UTF-8,但服务器确实提供了任何非UTF格式。
尝试使用CHARSET = UTF-16作为客户端参数。
使用CHARSET = UTF16代替CHARSET = UTF-16,可以找到更多信息https://docs.teradata.com/reader/pk_W2JQRhJlg28QI7p0n8Q/tE40Yeyi9_0_~khKoRUbFA