Русский текст отображается иероглифами
Всем привет.
Закачал свой htm файлы на сайт, зашел на него и увидел что весь русский текст отображается иероглифами. Можно задать в кодировке кирилицу, но это не удобно и не хорошо. Я погуглил, вставил в head:
meta http-equiv="charset" content="windws-1251">
Русский текст частично отображается иероглифами
Дико извиняюсь, что поднимаю древнюю тему, просто столкнулся с аналогичкой ситуацией, и мне метод.
Псевдокласс content:»» русский текст иероглифами
По каким то причинам теперь если вбивать в content "" в псевдокласе русский текст он отображается.
Не отображается русский текст
Начал изучать html/css и решил перейти к практике, для интереса сверстал простой сайтик для своей.
html xmlns="http://www.w3.org/1999/xhtml">
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Сообщение от 4iNo
html xmlns="http://www.w3.org/1999/xhtml">
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Не помогло, Опера теперь весь тектс видит в виде символв:�
Попробывал ie, он все нормально видит и с этим тегом и без него.
Может быть проблема в том что сайт размещен на домене .net?
Какие есть еще идеи, что мне нужно сзделать чтобы опера воспринимала кирилицу по умолчанию?
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
meta http-equiv="Content-Type" content="text/html; charset=cp1251" />
Сообщение от -scout-
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
meta http-equiv="Content-Type" content="text/html; charset=cp1251" />
Добавлено через 2 минуты
тю блин поспешил ( в Опере отображается нормально, в ИЕ так же осталось
Не помогает =( Отображается всё иероглифами.
1 2 3 4 5 6 7 8 9 10 11 12
html xmlns="http://www.w3.org/1999/xhtml"> head> title>/title> meta http-equiv="Content-Type" content="text/html; charset=cp1251"/> link href="css/stylemain.css" rel="stylesheet" type="text/css" /> link href="css/layoutmain.css" rel="stylesheet" type="text/css" /> script src="js/cufon-yui.js" type="text/javascript">/script> script src="js/cufon-replace.js" type="text/javascript">/script> script src="js/agfriquer_400.font.js" type="text/javascript">/script> script src="scripts/swfobject_modified.js" type="text/javascript">/script> style type="text/css">
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Открой страницу редактором Notepad++
Выбери в меню «Кодировки» пункт «Преобразовать в UTF-8»
Сохрани
Добавлено через 6 минут
Всё дело в том, что указанная кодировка в теге должна совпадать с реальной кодировкой символов на странице.
Указывая кодировку в теге вы говорите браузеру, что символы на вашей странице закодированы с помощью такой-то кодировки. Если не знаете, что у вас за кодировка — выполните шаги, которые я указал выше.
Кодировка HTML-страницы
Это задание архивной части. Перейдите по ссылке, чтобы пройти задание в актуальной части.
Кодировку HTML-страницы нужно указывать для того, чтобы веб-браузер мог правильно отображать текст на странице. Если браузер неправильно угадает кодировку, то вместо текста будут отображаться иероглифы.
Чтобы сообщить браузеру кодировку HTML-страницы, необходимо внутри тега использовать тег:
Самая распространённая современная кодировка — utf-8 . Используйте её во всех своих проектах.
Для кириллицы в Windows charset часто задавали как windows-1251 . Но сейчас это считается плохой практикой.
Хотите начать карьеру веб-разработчика? Записывайтесь на профессию «Фронтенд-разработчик», которая стартует 8 августа 2023. Всего от 4 130 ₽ в месяц.
Кодировка
Когда кодировка документа задана неверно, некоторые символы отображаются как «иероглифы», а некоторые нет.
!DOCTYPE>
Спасибо! Мы скоро всё исправим)
Код изменился, нажмите «Обновить» или включите автозапуск.
Вы перешли на другую страницу
Кликните внутри мини-браузера, чтобы поставить фокус в это окно.
Сейчас кодировка задана неверно, поэтому текст в мини-браузере отображается неправильно.
Если у вас возникли сложности во время прохождения задания, то вы можете обратиться за помощью на наш форум или задать вопрос в Телеграм-чате.
Практикум
Профессии
- HTML и CSS.
Профессиональная вёрстка сайтов - HTML и CSS.
Адаптивная вёрстка и автоматизация - JavaScript.
Профессиональная разработка веб-интерфейсов - JavaScript.
Архитектура клиентских приложений - React.
Разработка сложных клиентских приложений - Node.js.
Профессиональная разработка REST API - Node.js и Nest.js.
Микросервисная архитектура - TypeScript. Теория типов
- Алгоритмы и структуры данных
- Паттерны проектирования
- Webpack
- Vue.js 3. Разработка клиентских приложений
- Git и GitHub
- Анимация для фронтендеров
Информация
Кодировки и веб-страницы
Возвращаясь к избитой проблеме с кодировками русских букв, хотелось бы иметь под рукой некий единый справочник или руководство, в котором можно найти решения различных сходных ситуаций. В своё время сам перелопатил множество статей и публикаций, чтобы находить причины ошибок. Задача этой публикации — сэкономить время и нервы читателя и собрать воедино различные причины ошибок с кодировками в разработке на Java и JSP и способы их устранения.
Варианты решения могут быть не единственными, охотно добавлю предложенные читателем, если они будут рабочими.
Итак, поехали.
1. Проблема: при получении разработанной мной страницы браузером весь русский текст идёт краказябрами, даже тот, который забит статически.
Причина: браузер неверно определяет кодировку текста, потому что нет явного указания.
Решение: явно указать кодировку:
a) HTML: добавляем тэг META в хидер страницы:
[response.setCharacterEncoding("cp1251");] [response.setContentType("text/html;charset=cp1251");]
2. Проблема: написанный в JSP-странице статический русский текст почему-то идёт краказабрами, хотя кодировка страницы задана.
Причина: статический текст был написан в кодировке, отличной от заданного странице.
Решение: изменить кодировку в редакторе (например, для AkelPad нажимаем «Сохранить как» и выбираем нужную кодировку).
3. Проблема: получаемый из запроса текст идёт кракозябрами.
Причина: кодировка запроса отличается от используемой для его обработки кодировки.
Решение: установить кодировку запроса или перекодировать в нужную.
а) Java, со стороны отправителя не задана нужная кодировка — перекодируем в нужную:
[String MyParam= new String(request.getParameter("MyParam").getBytes("ISO-8859-1"),"cp1251");]
Примечание: кодировка ISO-8859-1 устанавливается по умолчанию, если не была задана другая.
б) Java, со стороны отправителя задана нужная кодировка — устанавливаем кодировку запроса:
[request.setCharacterEncoding("cp1251");]
4. Проблема: отправленный GET-параметром русский текст при редиректе приходит кракозябрами.
Причина: упаковка русского текста в URI по умолчанию идёт в ISO-8859-1.
Решение: упаковать текст в нужной кодировке вручную.
а) JSP, URLEncoder:
5. Проблема: текст из базы данных читается кракозябрами.
Причина: кодировка текста, прочитанного из базы данных, отличается от кодировки страницы.
Решение: установить соответствующую кодировку страницы, либо перекодировать полученные из базы данных значения.
а) Java, перекодирование считанной в db_string базы данных строки:
[String MyValue = new String(db_string.getBytes("utf-8"),"cp1251");]
6. Проблема: текст записывается в базу данных кракозябрами, хотя на странице отображается правильно.
Причина: кодировка записываемой строки отличается от кодировки сессии работы с базой данных, либо от кодировки базы данных (стоит помнить, что они не всегда совпадают).
Решение: установить необходимую кодировку сессии или перекодировать строку.
а) Java, перекодирование записываемой строки db_string в кодировку сессии или базы данных:
[String db_string = new String(MyValue.getBytes("cp1251"),"utf-8");]
[dburl += "?characterEncoding=cp1251";]
[connectionProperties="useUnicode=no;characterEncoding=cp1251;"]
г) MySQL, прямая установка кодировки сессии вызовом SET NAMES (connect — объект подключения Connection):
[CallableStatement cs = connect.prepareCall("set names 'cp1251'"); cs.execute();]
7. Проблема: если ничего не помогло…
Решение: всегда остаётся самый «топорный» метод — прямое перекодирование.
а) Для известной кодировки источника:
[String MyValue = new String(source_string.getBytes(«utf-8″),»cp1251»);]
б) Для параметра запроса:
[String MyValue = new String(request.getParameter(«MyParam»).getBytes(request.getCharacterEncoding()),»cp1251″);]
Дополнение, или что нужно знать:
1. Кодировки базы данных и сессии подключения могут различаться, в зависимости от конкретной СУБД и драйвера. К примеру, при подключении к MySQL стандартным драйвером com.mysql.jdbc.Driver без явного указания кодировка сессии устанавливалась в UTF-8, несмотря на другую кодировку схемы БД.
2. Кодировка упаковки строки запроса в URI по умолчанию устанавливается в ISO-8859-1. С подобным можно столкнуться, например, при передаче явно заданного текста в редиректе с одной страницы на другую.
3. Взаимоотношения кодировок страницы, базы данных, сессии, параметров запроса и ответа не зависят от языка разработки и описанные для Java функции имеют аналоги для PHP, Asp и других.
Примечание: восстановить ссылки на источники нет возможности, все примеры взяты из собственного кода, хотя когда-то так же выискивал их по многочисленным форумам.
Надеюсь, этот небольшой обзор поможет начинающим веб-программистам сократить время отладки и сберечь нервы.
Курсы javascript
utf-8 это способ кодирования кодов UNICODE в последовательность байт, где каждый символ может занимать от 1 до 6 байт в зависимости от его числового кода.
Что у вас в v1? Строка? В javascript она хранится в кодировке utf-16, где каждый (ну большинство часто используемых) символ хранится как число от 0 до 65535 и занимает 2 байта.
Если ее перекодировать в utf-8 — получится некоторая последовательность байт.
Что вы хотите получить в v2?
utf-8 в javascript можно хранить только в Uint8Array — специальный вид массива, где каждый элемент занимает 1 байт.
C ним невозможно работать как со строкой.
Это переведет в esape последовательность в utf-16
«Москва» превращается в «%u041C%u043E%u0441%u043A%u0432%u0430»
А где и зачем это может понадобиться?
В utf-8 esape последовательность должна быть
«%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B0»
Что бы ее можно было в url вставлять.
encodeURIComponent переводит пробел в %20, вместо +, если нужно использовать в параметрах url.
Не знаю, всегда ли и насколько это допустимо.
Короче, надо выяснять для чего это автору нужно, и как потом использовать
Добавил escape, получилось как надо, работает. Выделяю эту абракадабру и браузер открывает нужный город))),
Но в учебниках пишут что это Устарело, Эта возможность была удалена из веб-стандартов. Хотя некоторые браузеры по-прежнему могут поддерживать её, она находится в процессе удаления. Не используйте её ни в старых, ни в новых проектах. Страницы или веб-приложения, использующие её, могут в любой момент сломаться.
Так тоже работает var v2 = encodeURIComponent(v1);
Для чего это нужно?
1. Нужно привязать код страницы к конкретному городу, и чтобы она не работала в другом городе.
2. Также саму кириллицу (город) в коде хотелось прикрыть абракадаброй, чтобы не читаемо было.