2012-04-27 84 views
1

我只得到结果为?????当我在英语如何从sql sever 2005中读取java Servlet中的阿拉伯文字母?

使用的Java servlet

的结果中读取Eclipse中的数据库

福特福克斯电动打了100 MPG当量 福特开始生产福克斯电动的,声称对效率,将最EV竞争对手,而它瞄准丰田普锐斯的C-Max混合动力车和插电式混合动力车,预计明年下半年。

工作正常。

但阿拉伯语不工作 '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项目中,然后创建一个将字节数组作为公司的新字符串它将使用阿拉伯语编码的“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 
      }