1

私は?????としてのみ結果を取得します Javaサーブレットを使用して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();
    }
}
4

2 に答える 2

0

試す

                String header=rs.getString("headline").getBytes("utf-8");
                hyper=rs.getString("link").getBytes("utf-8");
                String info=rs.getString("info").getBytes("utf-8");
于 2012-04-27T21:05:37.927 に答える
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
            }
于 2015-02-08T17:15:03.243 に答える