我正在尝试使用netbeans从MS SQL Server检索结果。
问题是当我从数据库中检索阿拉伯语单词时,我将其作为?????
收到。
任何人都可以提供帮助吗?
这是代码:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection("jdbc:odbc:yasser");
System.out.println("test");
Statement sta = conn.createStatement();
String Sql = "select * from mainn order by id";
ResultSet rs = sta.executeQuery(Sql);
String res = null;
while (rs.next()) {
res = rs.getString("text");
System.out.println(res);
}
答案 0 :(得分:1)
未正确插入数据库中的数据。在将阿拉伯数据插入数据库时,您应该选择UT-8。并将数据库的字符集更改为AL32UTF8。
答案 1 :(得分:1)
经过大量搜索后,我发现了一个非常好的解决方法,即将阿拉伯语中的列转换为varbinary,然后将其作为字节在java项目中获取,然后创建一个接受字节数组的新字符串作为构造函数参数,将使用阿拉伯语编码“Windows-1256”来映射阿拉伯字符的正确值
SQL select语句:
select cast([column_name] as varbinary(max)) from [table_name] where [condition]
java代码:
Statement stat = con.createStatement();
ResultSet rs = stat.executeQuery("select cast([column_name] as varbinary(max)) from [table_name] where [condition]");
while (rs.next()) {
byte[] tmp = rs.getBytes("column_name");
String cloumn_value = new String(tmp, "Windows-1256");
//cloumn_value arabic value
}