2013-09-03 2 views
1

Я пытаюсь получить результат с MS SQL Server с помощью netbeans.не может получить арабские буквы из sqlserver с помощью java

проблема возникает, когда я извлекаю арабские слова из базы данных. Я получаю ее как ?????.

Любой может помочь?

и вот код:

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

, что я сделал. но это не сработало. – user2728312

+0

http://stackoverflow.com/questions/10357301/how-to-read-arabic-letter-in-java-servlet-from-sql-sever-2005?rq=1 –

+0

также не работает. – user2728312

ответ

1

данные в базе данных не вставлена ​​правильно. при вставке арабских данных в базу данных вы должны выбрать UT-8. и изменить набор символов базы данных на AL32UTF8.

0
  • После долгих поисков я нашел очень хороший обходной путь, который должен бросить столбец, на арабском языке, чтобы VARBINARY, а затем получить его в проекте Java в байтах затем создать новую строку, которая принимает байты массив в качестве параметра конструктора, который будет использовать арабское кодирование «Windows-1256», чтобы отобразить правильных значения арабских букв

    • вот пример кода

SQL оператор выбора:

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 
      } 
Смежные вопросы