我有以下问题。java 结果集不显示 Unicode(中文)字符,而是显示所有其他字符。我确信所有字符都在 Microsoft SQL Server(作为 nvarchar)中正确存储/显示。
所以这似乎是一个检索问题。这是代码:
受保护的字符串 getStringValueNoNulls(ResultSet rs, String colName) {
String ret = rs.getString(colName);
ret = new String(ret.getBytes(), "UTF8");
System.out.println(ret);
...打印语句的输出:
SO(数据库中的 SO)
???(DB中的张先生)
??????9999 (建国门外大街9999 in DB)
?? (北京在DB)
100010(数据库中的 100010)
它显示所有英文/ASCII字符,但不显示中文字符。我注意到中文字符的数量等于它替换的问号。
我之前尝试过简单的 getString(),现在做 getBytes() 进行转换,两者都产生相同的结果。
是我遗漏了什么,还是驱动程序有问题?请帮忙。
----------------我刚刚添加了这个作为我的连接,没有帮助:
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String connectionUrl = "jdbc:sqlserver://127.0.0.1:1433;database=myDB;user=myuser;password=myPass;useUnicode=true;characterEncoding=UTF-8";
连接 con = DriverManager.getConnection(connectionUrl);
仍然为汉字得到相同的问号。
问候。