Строковое кодирование Java в UTF-8 - PullRequest
3 голосов
/ 17 ноября 2009

У меня есть некоторый HTML-код, который я храню в переменной Java.lang.String. Я записываю эту переменную в файл и устанавливаю кодировку UTF-8 при записи содержимого строковой переменной в файл в файловой системе. Я открываю этот файл, и все выглядит отлично, например & Rarr; отображается как стрелка вправо.

Однако, если одна и та же строка (содержащая такое же содержимое) используется страницей jsp для отображения содержимого в браузере, такие символы, как & rarr; показывать в виде знака вопроса (?)

При хранении содержимого в переменной String я использую:

String myStr = new String(bytes[], charset)  

вместо просто:

String myStr = "<html><head/><body>&rarr;</body></html>";

Может кто-нибудь сказать, почему контент String отлично записывается в файловую систему, но не отображается в jsp / browser?

Спасибо.

Ответы [ 3 ]

4 голосов
/ 17 ноября 2009

но не рендерится в jsp / браузере?

Вам также необходимо установить кодировку ответа. В JSP вы можете сделать это, используя

<%@ page pageEncoding="UTF-8" %>

Это фактически имеет тот же эффект, что и установка следующего метатега в HTML <head>:

<meta http-equiv="content-type" content="text/html; charset=utf-8">
1 голос
/ 17 ноября 2009

Возможности:

  1. Браузер не поддерживает UTF-8
  2. В заголовках HTTP нет Content-Type: text/html; charset=utf-8.
0 голосов
/ 17 ноября 2009

Ленивый разработчик (= я) использует Apache Common Lang StringEscapeUtils.escapeHtml http://commons.apache.org/lang/api-release/org/apache/commons/lang/StringEscapeUtils.html#escapeHtml(java.lang.String), который поможет вам обрабатывать все «нечетные» символы. Позвольте браузеру сделать окончательный перевод HTML-сущностей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...