Получение ??????вместо текста на хинди из базы данных MySQL с использованием JSP - PullRequest
1 голос
/ 06 сентября 2011

Я получаю ??????вместо хинди текст из базы данных MySQL с использованием JSP.

Вот мой код JSP:

<html> 
     <head> 
     <title>display data from the table using jsp</title> 
    </head> 
    <body> 
    <h2>Data from the table 'stu_info' of database 'student'</h2> 
    <% 
    try { 

    String connectionURL = "jdbc:mysql://localhost:3306/student"; 

    Connection connection = null; 

    Statement statement = null; 

    ResultSet rs = null; 
    Class.forName("com.mysql.jdbc.Driver").newInstance(); 
    connection = DriverManager.getConnection(connectionURL, "root", "root"); 
    statement = connection.createStatement(); 

    String QueryString = "SELECT * from stu_info"; 
    rs = statement.executeQuery(QueryString); 
    %> 
    <TABLE cellpadding="15" border="1" style="background-color: #ffffcc;"> 
    <% 
    while (rs.next()) { 
    %> 
    <TR> 
    <TD><%=rs.getInt(1)%></TD> 
    <TD><%=rs.getString(2)%></TD> 
    <TD><%=rs.getString(3)%></TD> 
    <TD><%=rs.getString(4)%></TD> 
    </TR> 
    <% } %> 
    <% 
    // close all the connections. 
    rs.close(); 
    statement.close(); 
    connection.close(); 
    } catch (Exception ex) { 
    %> 
     </font> 
    <font size="+3" color="red"></b> 
    <% 
    out.println("Unable to connect to database."); 
    } 
    %> 
    </TABLE><TABLE> 
    <TR> 
    <TD><FORM ACTION="welcome_to_database_query.jsp" method="get" > 
    <button type="submit"><-- back</button></TD> 
    </TR> 
    </TABLE> 
    </font> 
    </body> 
    </html>

Три столбца английского текста отображаются правильно.Для столбца хинди я использовал сопоставление utf-general_ci, но когда я печатаю rs.getString(4), это дает мне ???????.Мой браузер также поддерживает UTF-8.Чем вызвана эта проблема и как я могу ее решить?

1 Ответ

1 голос
/ 06 сентября 2011

Когда вы получаете ? вместо нужного символа, это означает, что мессенджер, отвечающий за передачу символов, сам по себе осведомлен о кодировке символов, которая используется как в источнике, так и в пункте назначения.Любой символ, который не поддерживается кодировкой символов, используемой в месте назначения, будет заменен на ?.В вашем конкретном случае передачи символов с сервера БД в ответ HTTP это может иметь две причины:

  • Передача символов с сервера БД в код Java с помощью JDBCдрайвер не использует кодировку символов, которая поддерживает эти символы.

  • Передача символов из вашего кода Java в тело ответа HTTP с помощью API-интерфейса JSP / Servlet не использует кодировку символов, котораяподдерживает эти символы.

В вашем конкретном случае, похоже, у вас проблемы с .Я не вижу кодировку символов в URL-адресе вашего соединения JDBC и не вижу установленной кодировки страницы JSP.

Исправьте URL-адрес подключения к MySQL JDBC:

String connectionURL = "jdbc:mysql://localhost:3306/student?useUnicode=yes&characterEncoding=UTF-8"; 

Исправьте кодировку страницы JSP, добавив следующую строку в top вашего JSP:

<%@page pageEncoding="UTF-8" %>

См. Также:


Не связано сконкретная проблема, у вас есть огромная проблема дизайна в вашем коде.Код Java принадлежит классам Java, а не файлам JSP.См. Также Как избежать использования кода Java в файлах JSP? .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...