В рамках проекта нам нужно было перейти с Ubuntu 14.04 на Ubuntu 16.04. Тем не менее, поскольку обновление было завершено, полная функциональность не работает правильно. Кодировка символов перемешивается при сохранении в базе данных. Одна и та же версия программного обеспечения Debian дает разные результаты, что подразумевает проблему ISO с другой библиотекой или некоторые различия в поведении Java.
У обновленного сервера нет проблем, и он сохраняется только при более новых установках, что подразумевает проблему на уровне ISO, но нет никаких явных признаков того, какая библиотека или аналогичная может быть не установлена.
Было добавлено ведение журнала для печати полученных байтов, и Java все еще читает это, как и следовало ожидать. Однако, когда он сохраняет их в базе данных, они совершенно разные. Это делается через настройку соединения JPA ранее. Это уже использует поле 'useUnicode = true & characterEncoding = UTF-8'. Когда Java снова читает эти данные, она все еще думает, что использует правильные байты, когда это не так. Аналогично, если вы добавляете что-то непосредственно в БД, в журналах отладки Java не отображаются правильные байты, однако информация по-прежнему отображается правильно при отображении через интерфейс, который мог пройти только здесь. Это подразумевает, что проблема заключается в хранении данных, а не в их обработке, но одна и та же версия установки Debian влияет на обе версии. Рабочая версия правильно читает байты, когда выводит их из базы данных.
شلاؤ, например, на арабском языке, как предполагается, кодируется как (с помощью шестнадцатеричной функции в mysql / mariadb), в правильной версии выходит как «D8B4D984D8A7D8A4» НО в неправильной версии, отображается как «C398C2B4C399C284C398C2A7C39. Это может предоставить больше информации о том, почему кодировка не работает правильно. С Java, читающим неправильные байты, как будто они правильные, это, скорее всего, проблема с Java, но путаница остается из-за несоответствия между системами.