Передача символов иностранного языка в/из базы данных

Я пытаюсь разрешить пользователям вводить символы иврита в определенные поля в форме HTML (обрабатывается с использованием java). Я провел некоторое исследование, и очевидно, что следующий тег должен быть частью HTML-документа:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

После этого я получаю следующий результат: когда пользователь вводит текст на иврите в поле ввода, он сохраняется и отображается на экране правильно, на иврите. Однако, если я просматриваю данные в базе данных, это непонятно. Кроме того, если я попытаюсь вывести его в файл (используя iText), это будет тарабарщина. Однако, если я ввожу данные прямо в базу данных, они читаются на иврите в базе данных, а также в выходном файле, но на экране это тарабарщина.

Образец: Если пользователь ввел его в браузере, оно выглядит так: עִבְרִית

Эта же строка при вводе в базу данных выглядит на экране так: �Ѱ���

При просмотре базы данных строка, введенная браузером, выглядит следующим образом: ×¢Ö´×ְרִ×ת

введенная вручную строка выглядит следующим образом: עִבְרִית (хотя она отображается слева направо, тогда как иврит является языком с письмом справа налево; при копировании и вставке сюда она отображается правильно, справа налево)

Очевидно, что база данных и браузер не «говорят» на одном языке с этой кодировкой. Я использую SQL Server и не вносил никаких изменений в базу данных, кроме проверки того, что рассматриваемое поле определено как поле nvarchar. Что мне не хватает?


person twpc    schedule 04.11.2009    source источник


Ответы (1)


Похоже, кодировка базы данных установлена ​​неправильно. Если база данных ожидает только 8859-1 (общая схема кодирования по умолчанию), она попытается преобразовать utf-8 в 8859-1. Это часто плохо работает.

Вот статья MS по этому вопросу: http://support.microsoft.com/kb/232580< /а>

Ларри

person Larry K    schedule 04.11.2009
comment
Спасибо за помощь и ссылку. Я прочитал статью, и она объяснила проблему, но я до сих пор не могу понять, как ее исправить. Как я могу либо изменить HTML для использования UTF-16 (UCS-2, который, как утверждается в статье, используется SQL Server 2000), либо заставить SQL Server понимать UTF-8? Я попытался перевести строку в UTF-16, но, похоже, это не сработало. - person twpc; 04.11.2009
comment
Вы пытались настроить поля БД на тип BINARY/VARBINARY/IMAGE, как предлагает статья MS (вариант 4)? - person Larry K; 05.11.2009
comment
Примечание: прочитайте раздел комментариев в статье выше. Вот где реальная помощь - person twpc; 05.11.2009