从teradata中读取特殊字符的问题-JDBC

问题描述 投票:0回答:3

我使用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”作为输出...

java jdbc teradata
3个回答
0
投票

似乎是Unicode替换字符U+FFFD。 JDBC客户端和服务器对字符使用不同的编码。客户端似乎尝试使用UTF-8,但服务器确实提供了任何非UTF格式。


0
投票

尝试使用CHARSET = UTF-16作为客户端参数。


0
投票

使用CHARSET = UTF16代替CHARSET = UTF-16,可以找到更多信息https://docs.teradata.com/reader/pk_W2JQRhJlg28QI7p0n8Q/tE40Yeyi9_0_~khKoRUbFA

© www.soinside.com 2019 - 2024. All rights reserved.