2012-04-27 9 views
1

私は結果を?????私は英語SQL Server 2005からjavaサーブレットでアラビア語の文字を読み取る方法は?

で、結果として、Javaサーブレット

を使って日食でデータベースを読んだとき

フォードフォーカスエレクトリックはヒットする以上の100 MPG同等 フォードながら、効率にもなります最高のEVの競合他社を主張し、フォーカス・エレクトリックの生産を開始それは来年の後半に期待されるそのC - マックスハイブリッドとプラグインハイブリッドでトヨタプリウスを目指す。

は問題なく動作しています。

が、アラビア語として 'D39H/J)//これは アラビア語でなければなりません')DEEDCを働いていない

package website; 

import java.io.IOException; 
import java.io.PrintWriter; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

public class Home extends HttpServlet { 

    private static final long serialVersionUID = 8443024680664769771L; 

    public void doGet(HttpServletRequest req, 
      HttpServletResponse res) 
      throws ServletException, IOException { 
     res.setContentType("text/html"); 
     res.setCharacterEncoding("utf-8"); 
     PrintWriter out = res.getWriter(); 
     out.println("<html>"); 
     out.println("<head>"); 
     out.println("<title>info"); 
     out.println("</title>"); 
     out.println("</head>"); 
     out.println("<body>"); 
     out.println("<center>"); 
     out.println("<table>"); 
     out.println("<tr>"); 
     out.println("<td>"); 
     try { 
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 

      Connection con = DriverManager.getConnection("jdbc:odbc:website"); 
      Statement stat = con.createStatement(); 
      //ResultSet rs=stat.executeQuery("select * from res where word='"+search+"' or web='"+search+"'"); 
      ResultSet rs = stat.executeQuery("select * from news"); 
      String hyper = null; 
      while (rs.next()) { 
       String header = rs.getString("headline"); 
       hyper = rs.getString("link"); 
       String info = rs.getString("info"); 
       out.println("<a href=" + hyper + ">" + header + "</a>"); 
       out.println("<p>" + info + "</p>"); 
      } 
     } catch (SQLException e) { 
      // TODO: handle exception 
      e.printStackTrace(); 
     } catch (ClassNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     out.println("</td>"); 
     out.println("</tr>"); 
     out.println("</table>"); 
     out.println("</body>"); 
     out.println("</html>"); 

     out.close(); 
    } 
} 

答えて

0

は、私が見つけた検索の多くの後

   String header=rs.getString("headline").getBytes("utf-8"); 
       hyper=rs.getString("link").getBytes("utf-8"); 
       String info=rs.getString("info").getBytes("utf-8"); 
0
  • をお試しくださいアラビア語の列をvarbinaryにキャストしてから、Javaプロジェクトでバイトとして取得し、バイト配列をcoとして取得する新しい文字列を作成するという非常に優れた回避策ですアラビア文字

    ここ
    • の正しい値をマッピングするためにアラビアエンコーディングの「Windows-1256」を使用しますnstructorパラメータは、コード

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 
      } 
関連する問題