Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Content-Type: text/plain; charset="UTF-8"




Content-Type: text/plain; charset=" UTF-8"

Для веб-страницы оригинальная идея была в том, что веб-сервер сам будет посылать HTTP заголовок, перед самой страницей HTML. Но это вызывает определенные проблемы. Предположим, что вы имеете большой веб-сервер с большим количеством сайтов и сотнями страниц, созданных большим количеством людей на огромном количестве различных языков, и все они не используют специфическую кодировку. Сам веб-сервер действительно не может знать, какая кодировка у каждого файла, и поэтому не может послать заголовок с указанием Content-Type. Поэтому для указания правильной кодировки в http заголовке оставалось держать информацию о кодировке внутри html файла путем вставки специального тега. Сервер бы в таком случае считывал наименование кодировки из мета-тега и помещал ее в HTTP заголовок.

Возникает уместный вопрос: «как начать считывать файл HTML, пока Вы не узнаете, какую кодировку он использует?! К счастью, почти все кодировки используют одну и ту же таблицу символов с кодами от 32 до 127, и сам код HTML состоит из этих символов, и вы можете даже не встретить в html файле информацию о кодировке, если он полностью состоит из таких символов. Поэтому, в идеале, тег < meta> с указанием кодировки действительно должен быть в самой первой строке в секции< head>, потому что как только веб-браузер увидит этот признак, он перестанет разбирать страницу и начнет все заново, используя ту кодировку, которую вы задали.

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

Что делают веб-браузеры, если они не находят никакого Content-Type, ни в заголовке http, ни в теге Meta? Internet Explorer фактически делает кое-что весьма интересное: он пробует распознать кодировку и язык, основываясь на частоте, с которой различные байты появляются в типичном тексте в типичных кодировках различных языков. Так как разные старые 8-байтовые кодовые страницы по-разному размещали национальные символы в диапазоне между 128 и 255, и так как все человеческие языки имеют различные частотные вероятности использования букв, такой подход часто неплохо срабатывает.

Это весьма причудливо, но это, кажется, действительно cрабатывает достаточно часто и наивные авторы веб-страниц, которые никогда не знали, что они нуждались в указании тэга Content-Type в заголовке их страничек для того, чтобы странички правильно отображались, до того прекрасного дня, когда они напишут что-то, что точно не соответствует типичному частотно-вероятностному распределению букв их родного языка, и Internet Explorer решит, что это корейский язык и покажет ее соответствующим образом.

Так или иначе, что остается делать читателю этого вебсайта, который был написан на болгарском языке, но отображается на корейском (и даже не на осмысленном корейском)? Он использует меню View | Encoding и пробует несколько разных кодировок (есть по крайней мере дюжина для восточноевропейских языков), пока картина не станет более ясной. Если, конечно, он знает, как это делать, ведь большинство людей этого не знает.

Стоит отметить, что для UTF-8, которая уже в течение многих лет прекрасно поддерживается веб-браузерами, еще никем не встречена проблема с правильным отображением веб-страниц.

Ссылки:

  1. Joel Spolsky. The absolute minimum every software developer absolutely, positively must know about Unicode and character sets (No Excuses! ) 08. 10. 2003 http: //www. joelonsoftware. com/articles/Unicode. html
  2. Сергей Астахов. Java: русские буквы и не только…
  3. Сергей Семихатов. Java и Unicode. 08. 2000 - 27. 07. 2005
  4. Хорстман К. С., Корнелл Г. Библиотека профессионала. Java 2. Том 1. Основы. — М.: Издательский дом Вильямс, 2003. — 848 с
  5. Dan Chisholms. Java Programmer Mock Exams. Objective 2, InputStream and OutputStream Reader/Writer. Java Character Encoding: UTF and Unicode. http: //www. jchq. net/certkey/1102_12certkey. htm
  6. Package java. io. JavaTM 2 Platform Standard Edition 6. 0 API Specification. http: //java. sun. com
  7. Unicode Standard, version 4. 0. http: //www. unicode. org

 

Работа со строками в Java – (2 академ. часов)

Еще часто используемый тип данных – строка (String). Ну понятно, работа с файлами, с текстом, вывод на экран, пользовательский ввод. И тут сразу возникает проблема с кодировками. Это действительно очень важно. Здесь для строк (String) используется UTF-16 (двухбайтовый), а во внешнем мире может быть любая кодировка. Вы откроете текстовый файл и там другая кодировка. И вам придется конвертировать. Когда мы будем работать с файлами, мы посмотрим, как это делается. А сейчас нас интересует сам класс String.

Вопрос: Кто что-нибудь знает про UTF-16?

Ответ: Это нормально, что никто ничего не знает. Вот держите статью: почитайте.

Здесь рассказывается про кодировки, про то, как это работает, как это было сделано и зачем это было сделано.

Что еще можно показать про работу со строками (String). Вообще любой Java-класс, с которым я начинаю работать, конечно, требует документации. И ни в какой книжке вы не получите полной подробной документации, потому что переписать все, что есть в электронном справочнике в книге, конечно, можно, но потом кому эта книга будет нужна? Поэтому вы будете всегда пользоваться только при работе с классами онлайн-справочной системой.

Вопрос: Как в эту справочную систему попасть?

Ответ: Я в любом поисковике набираю: «Java8. String». Enter. Первая ссылка после этого идет на документацию. Переходим сюда и открывается описание класса String по этой ссылке.

Есть кнопочка Frames, которая нарисована не очень внятно. Дело в том, если нажать на Frames, она показывает не просто 1 класс, а показывает некую структуру. Какие есть библиотеки, что и какие классы находятся в каждой библиотеке.

В данном случае мы имеем полное описание про класс String.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...