Это не зависит от используемой кодировки символов.Это зависит от используемой клиентской платформы.Когда клиент использует операционную систему Windows, каждая новая строка представляется \r\n
(CR + LF, возврат каретки и перевод строки).Когда клиент использует операционную систему на основе Unix, такую как Linux, Max OS X, FreeBSD, BeOS и т. Д., Тогда каждая новая строка представляется \n
(LF, перевод строки).Были также платформы, использующие \r
или \n\r
, такие как Commodore, Apple II, Acorn и т. Д., Но эти платформы считаются древними и вряд ли будут использоваться в наши дни.
Обратите внимание, что \n
показывает просто отлично, как полноценный разрыв строки в Windows, и что \r\n
также должен прекрасно отображаться как разрыв строки в Unix.То, что Windows использует \r\n
, обусловлено лишь историческими причинами, и то, что Windows все еще использует его, обусловлено причинами обратной совместимости.
Вам, как веб-разработчику Java, не обязательно беспокоиться об этом.Сервер просто получает именно те данные, которые ему отправил клиент.При повторном отображении данных клиента обе формы новой строки должны отображаться очень хорошо на большинстве, если не на всех современных платформах.
Если у вас возникли проблемы с этим, то вы, вероятно, делаете вещи неправильно.Например, возможно, вы разделяете на \n
только для получения массива строк, который приводит к тому, что \r
остается нетронутым.В таком случае лучше использовать BufferedReader
, который будет прозрачно обрабатывать \n
и \r\n
в методе readLine()
.
Например
BufferedReader reader = new BufferedReader(new StringReader(string));
List<String> lines = new ArrayList<String>();
for (String line = null; (line = reader.readLine()) != null;) {
lines.add(line);
}
// ...
Или когда вы заменяете строку \n
на <br/>
, чтобы разрывы строк отображались в разметке HTML, вы также можете рассмотреть возможность использования CSS white-space: pre;
вместо этого на родительском элементе HTML, содержащем текст.
См. также:
Не имеет отношения к конкретной проблеме, ваш тег <meta>
недопустим для HTML-страницы.Это должно быть text/html
.Кроме того, когда страница обслуживается HTTP-запросом, заголовок ответа Content-Type
будет переопределять любой <meta http-equiv="content-type">
.Теги <meta>
используются только при просмотре страницы из файловой системы локального диска.Чтобы узнать больше о кодировке символов, обратитесь к этой статье (опять же, не имеет отношения к вашей конкретной проблеме).