Когда вы получаете ?
вместо нужного символа, это означает, что мессенджер, отвечающий за передачу символов, сам по себе осведомлен о кодировке символов, которая используется как в источнике, так и в пункте назначения.Любой символ, который не поддерживается кодировкой символов, используемой в месте назначения, будет заменен на ?
.В вашем конкретном случае передачи символов с сервера БД в ответ 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? .