JSP и символ товарного знака

На веб-страницах нашего приложения символ товарного знака (TM) отображается как вопросительный знак. Однако зарегистрированная торговая марка (R) работает. Мы отображаем значение с помощью тега c: out в стандартной библиотеке JSP. Если я помещаю или ™ на страницу, чтобы проверить это, они появляются так, как должны.

<td><c:out value="${item.description}"/></td> <!-- does not work -->
<td>yada yada yada Spiros&trade; yada yada yada</td> <!-- works -->

Чтобы добавить к этому, мы также используем YUI, и перед отображением этих страниц они отображаются в таблице данных YUI как результаты запроса (пользователь щелкает строку, чтобы перейти на страницу, описанную выше). (TM) правильно отображается в этой таблице. Это говорит мне, что мы правильно извлекаем значение из нашей базы данных, а также работает код сервера, генерирующий XML для отправки обратно в таблицу данных YUI.

Так почему же та же строка правильно отображается в таблице данных YUI, но не в обычном JSP, если мы не жестко закодируем символ на странице?


person Gary Kephart    schedule 29.05.2009    source источник
comment
Какая кодировка символов используется на странице?   -  person Matthew Flaschen    schedule 30.05.2009


Ответы (2)


Вероятно, у вас проблема с кодировкой. Если в вашем JSP нет явной кодировки:

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

тогда пришло время добавить еще один. Попробуйте UTF-8, и если это не сработает, попробуйте ISO-8859-1 ... или, если вы знаете правильную кодировку, используйте ее.

person Eddie    schedule 29.05.2009

Когда символ отображается как? внутри браузера (обычно Firefox) это означает, что кодировка страницы (как она определяется браузером, не распознает символ). Хорошим тестом было бы Просмотр-> Кодировка символов-> UTF-8 в firefox. Если символ отображается правильно, то это означает, что символ (tm) закодирован с использованием стандарта UTF-8. Вы должны указать своей странице, что нужно установить заголовок кодировки ответа в UTF-8. Это должно работать для вас прямо сейчас.

Если это не сработает, вам следует сначала выяснить, как кодируется символ (например, посмотреть, какая кодировка считывается из базы данных), и попытаться установить заголовок кодировки страницы для этой кодировки.

Второй формат работает, потому что символ (TM) закодирован как известный объект html, который браузер интерпретирует независимо от кодировки страницы.

person Mihai Toader    schedule 29.05.2009
comment
Не существует такой вещи, как кодирование с использованием юникода. Юникод - это набор символов, а не кодировка. Похоже, вы объединяете Unicode и UTF-8. - person Matthew Flaschen; 30.05.2009
comment
Истинный :-). Увлекся. Отредактировано. - person Mihai Toader; 28.05.2010