Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
can';t使用java从sqlserver获取阿拉伯语字母_Java_Sql Server_Database_Netbeans_Character Encoding - Fatal编程技术网

can';t使用java从sqlserver获取阿拉伯语字母

can';t使用java从sqlserver获取阿拉伯语字母,java,sql-server,database,netbeans,character-encoding,Java,Sql Server,Database,Netbeans,Character Encoding,我正在尝试使用netbeans从MS SQL Server检索结果 问题是,当我从数据库中检索阿拉伯语单词时,我将其作为?????接收 有人能帮忙吗 代码如下: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection conn = DriverManager.getConnection("jdbc:odbc:yasser"); System.out.println("test"); Sta

我正在尝试使用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);
        }

数据库中的数据插入不正确。将阿拉伯语数据插入数据库时,应选择UT-8。并将数据库的字符集更改为AL32UTF8。

  • 经过大量搜索,我找到了一个非常好的解决方法,将阿拉伯语列转换为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
            }

我就是这么做的。但它不起作用。