Проблема з кодуванням при занесенні даних до бази MySQL
При занесенні текстових даних, що містять символи кирилиці, в базу даних MySQL за допомогою сервлета або JSP сторінки, необхідно вказати в сервлеті або JSP сторінці, в якому кодуванні потрапляють у сервлет дані та в якому кодуванні вони повинні зберігатися в базі даних.
Аналогічно під час вилучення текстових даних з бази та показу їх за допомогою сервлета або JSP сторінки необхідно вказати кодування вилучених з бази даних та кодування, в якому відображатиметься підсумкова сторінка.
Вказівка кодування, в якому надходять у сервлет дані, надіслані клієнтом, здійснюється за допомогою методу об'єкта типуHttpServletRequest.
Вказівка кодування в якій відправляється HTML-код, що формується сервлетом, проводиться за допомогою методу об'єкта типуHttpServletResponse.
Ну а вказівка кодування, в якому дані зберігаються в базі даних і витягуються від туди, проводиться в установках JDBC-драйвера бази даних.
При використанні JDBC-драйвера до MySQL Connector/J налаштування кодування виконуються за допомогою об'єкта типуjava.util.Properties, що містить вказівки параметрів кодування бази та передається як аргумент при створенні з'єднання з базою.
При вказівці кодування, що використовується JDBC-драйвером для зберігання даних у базі, важливо, щоб це кодування реально збігалося з кодуванням, використовуваним базою або таблицею, в якій зберігаються дані.
Бажано при створенні таблиць вказувати кодування даних, що зберігаються в них, явно, не покладаючись на налаштування за замовчуванням.
Найбільш переважним для багатомовних текстів є кодування utf8 (тут наводиться позначення кодування, що використовується в MySQL).
Якщо тексти, що зберігаються в таблиці, містять лише символикирилиці та латиниці, можна вказати при створенні таблиці кодуванняcp1251.
Більш детальну інформацію про кодування, що використовуються в БД MySQL та способи їх завдання, можна отримати на офіційному сайті MySQL.
Створити таблицю з урахуванням кодування або змінити кодування вже існуючої таблиці можна з SQL-запитів, що надсилаються з програми, або за допомогою утиліти phpMyAdmin доступною клієнтам нашого хостингу.
Нижче наведено приклад сервлета, що отримує дані від клієнта в кодуванні CP1251 і зберігає їх у таблицю з кодуванням UTF-8:
Корисні посилання:
Будь-які матеріали з цього сайту не можуть бути використані без дозволу власників ресурсу.