Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Java EE Как передать русские символы из jsp в БД Sql Server?

Август Сентябрь Знаток (334), на голосовании 6 месяцев назад
При заполнении БД (SQL Server) через jsp русскими словами, в БД они отображаются символами вроде этих: "& # 1085". Причём слова усекаются, когда нет для этого причины. Т.е. поле для ввода рассчитано на 30 символов, заполняю бд через jsp,например, словом "диван" и он усекает его, пишет символами в бд или вовсе не заносит его.

С английским языком всё в порядке, корректно отображается и работает. Пытался через добавление "useUnicode=true;characterEncoding=utf8" в строку соединения с БД, но не помогло.

На jsp странице также стоит:
 <%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%> 
Голосование за лучший ответ
Chromatic Scale Искусственный Интеллект (205821) 7 месяцев назад
Проблема, с которой вы столкнулись, связана с кодировкой символов при передаче данных из JSP в базу данных SQL Server. Вы уже правильно указали в JSP странице использование кодировки UTF-8, что является важным шагом для корректной работы с мультиязычным контентом. Однако, чтобы решить вашу проблему, нужно убедиться, что на всех этапах работы с данными используется поддержка UTF-8. Попробуйте следующие шаги:

1. **Убедитесь, что SQL Server поддерживает UTF-8**. Начиная с SQL Server 2019 (15.x), поддерживается использование UTF-8 как кодировки символов для данных. Если вы используете версию ниже, вам придется использовать типы данных `nvarchar` вместо `varchar` для хранения символов UTF-8.

2. **Проверьте настройки подключения к базе данных**. Для JDBC драйвера SQL Server строка подключения с использованием параметров `useUnicode` и `characterEncoding` может не подействовать, так как это более типично для MySQL. Вместо этого убедитесь, что ваша строка подключения к SQL Server включает параметры, необходимые для правильной работы с UTF-8. В случае SQL Server это обычно не требуется, но важно убедиться, что используется верный драйвер и его настройки соответствуют требованиям.

3. **Настройка веб-сервера**. Убедитесь, что ваш веб-сервер (например, Apache Tomcat) правильно настроен на работу с UTF-8. Это может включать настройку фильтров в вашем веб-приложении, которые устанавливают корректную кодировку запросов и ответов. Например, вы можете создать фильтр, который будет устанавливать для каждого запроса и ответа кодировку UTF-8.

4. **Использование типа данных nvarchar**. Для хранения строк, содержащих символы Unicode, в SQL Server, используйте тип данных `nvarchar` вместо `varchar`. `nvarchar` предназначен для работы с Unicode и поддерживает полный набор символов UTF-8.

5. **Проверьте кодировку при вставке/чтении данных**. При выполнении операций вставки или чтения данных из базы убедитесь, что данные правильно обрабатываются в UTF-8. Может потребоваться преобразование строк в Java перед отправкой в базу данных или после чтения из неё.

Если после выполнения вышеуказанных шагов проблема остаётся, проверьте настройки самой базы данных SQL Server и возможно обратите внимание на уровень драйвера JDBC и его настройки, чтобы убедиться в полной поддержке UTF-8 на всех уровнях работы с данными.
V̲i̲s̲t̲a̲s̲t̲e̲r̲ Искусственный Интеллект (263840) 7 месяцев назад
 String connectionUrl = "jdbc:sqlserver://localhost:1433;databaseName=YourDB;user=YourUsername;password=YourPassword;useUnicode=true;characterEncoding=UTF-8"; 

Август СентябрьЗнаток (334) 7 месяцев назад
у меня и так это записано
Похожие вопросы