Я пытаюсь писать русские символы в MySQL 5.5 с помощью JSP (JSTL). Хотя он работает на моем собственном локальном хосте, я не могу заставить его работать на сервере, который я арендовал.(JSP) Написание UTF8 для MySQL не будет работать
Он отправляет правильные параметры из формы на другую страницу, которая затем корректно выводит результат. Это также работает на сервере. Письмо/Чтение в БД и из него работает только на моем собственном локальном хосте.
Если я попытаюсь написать в БД на сервере, русские символы превратятся в вопросительные знаки. Тем не менее, я могу хранить русские символы, используя phpMyAdmin, которые затем корректно отображаются на моей веб-странице.
Вот мой запрос и то, что я пытался до сих пор: запрос:
<sql:update dataSource="${ds}" var="updatedTable">
INSERT INTO Question (question) VALUES (?)
<sql:param value="${param.questionAsked}" />
</sql:update>
DBConn:
<sql:setDataSource var="ds" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/myDBname?useUnicode=true&characterEncoding=utf-8" user="secret" password="secret" />
страницы Кодирование в каждом JSP файл:
<%@page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Добавьте это в tomcat server.xml:
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"
URIEncoding="UTF-8"
/>
раскомментировали CharacterEncodingFilter в web.xml:
<filter>
<filter-name>setCharacterEncodingFilter</filter-name>
<filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<async-supported>true</async-supported>
</filter>
<filter-mapping>
<filter-name>setCharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
И изменяющий/создание новых децибел и таблиц БД для тестирования с utf8:
CREATE TABLE `Question` (
`questionID` int(6) unsigned NOT NULL AUTO_INCREMENT,
`question` varchar(255) DEFAULT NULL,
`categoryID` int(6) unsigned DEFAULT NULL,
PRIMARY KEY (`questionID`),
KEY `categoryID` (`categoryID`),
CONSTRAINT `question_ibfk_1` FOREIGN KEY (`categoryID`) REFERENCES `Category` (`categoryID`)
) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8;
Я думаю, что моя проблема где-то в MySQL разъем. Я не мог понять, как изменить его, так как у меня нет доступа к конфигурационным файлам mysql. Я запросил SSH-доступ, если это поможет мне. Я довольно новичок в таких проблемах, так как я слишком долго не имел дело с базами данных и особенно с серверами.
PHPMYADMIN показывает:
character set client - latin1, (session value - utf8)
character set connection - latin1, (session value - utf8)
character set database - latin1
character set results - latin1, (session value - utf8)
character set server - latin1
character set system - utf8
collation connection - latin1_swedish_ci (session value - utf8_unicode_ci)
collation database - latin1_swedish_ci
collation server - latin1_swedish_ci
Я надеюсь, что вы можете предложить, что делать ...
Спасибо за вашу помощь Балус, я мог бы понять это с помощью сервлета, чтобы убедиться, что utf8 идет и из. –