Символы UTF-8, особенно арабский, при использовании стеклянной рыбы для моего приложения

I faced that issue before, using Liferay POrtal, after I import lar file, any Arabic character and any special character like "♦" ruined to be question mark "?", and when I check Database, i see its stored like that too, I mean "?" .

Its explained here : Import .lar file issue on Encoding with Glassfish as Application Server

добавление -DFile.encoding = UTF8 мне не помогло.

И использование самого Liferay с арабским языком не имеет проблем (например, добавления веб-контента), извлечение данных из БД работает хорошо.

В эти дни, я делаю обновление с liferay 5.2.8 до 6.1.20, я снова столкнулся с этой проблемой, все арабские персонажи, затронутые обновлением (извлеченные в каталог temp в качестве временного файла, а затем повторно вставленные в DB) получили повреждение ..

Поэтому мне показалось, что это проблема файловой системы с Glassfish.

Я попробовал Tomcat 7.0, и эта проблема не была выполнена, и мои данные сохранились, но мне нужно решить ее на сервере приложений Glassfish.

FYI: та же проблема с версиями Glassfish v2.1.1, v3.1.2.2 и ML.

Есть идеи?

0
nl ja de

2 ответы

Проверьте, какую кодировку использует ваша база данных. Типичным советом является использование UTF-8 для хранения базы данных. Осторожно: когда вы проверяете правильные символы в базе данных, ваши DB-инструменты могут использовать другую кодировку, чем сама база данных. Извините за ситуацию, в которой вы находитесь, проблемы с кодировкой всегда беспорядок.

Если вы обнаружите, что ваша база данных использует кодировку, отличную от UTF-8, вам может быть повезло, указав эту кодировку в строке подключения к базе данных (в зависимости от того, какую базу данных вы используете), но вам повезло бы с этим. Вероятно, вам немного поправиться - скрипт или вручную.

1
добавлено
Спасибо, но я не думаю, что его проблема с БД, поскольку я сказал то же приложение (здесь его liferay), делающий ту же самую партию в tomcat и glassfish, в tomcat нет проблемы, в glassfish имеет проблему, с тем же драйвером DB! и БД! и арабские символы хранятся правильно.
добавлено автор Al-Mothafar, источник
Это была неправильная кодировка, установленная в базе данных, и исправлена.
добавлено автор Al-Mothafar, источник
также та же строка соединения? То есть в отношении кодирования? По какой-то причине я помню, что у стеклянной рыбы было два свойства DB: «URL» и «Url» или аналогичные - я не знаю, какой из них имеет преимущество.
добавлено автор Olaf Kock, источник

-Dfile.encoding - это специфический параметр JVM для Oracle, как читать исходные файлы Java. Это не влияет на кодировку, как указано в заголовке Content-Type ответа HTTP.

Вы можете добавить в файл glassfish-web.xml следующее (находящееся в папке WEB-INF):


Если у вас есть .jsp-файлы, попробуйте это в web.xml:


    
        *.jsp
        UTF-8
    

0
добавлено
Спасибо за повтор. Я пробую ваше решение atm.
добавлено автор Al-Mothafar, источник
Я хочу сказать, что это не помогло мне, все еще есть проблема.
добавлено автор Al-Mothafar, источник