Meta charset utf 8 ошибка

At the beginning of my page, I have the following code:

<HTML>
<head>
<meta charset="utf-8">
<title> 
//other

I used the meta because I have to put in my website some Japanese characters. Here you can see an example:

<tr>
<td><label class="blacktd" onmouseover="apriimg('imgbox', '4');"> Shy Guy Bazaar </label></td>
<td><a href="http://www.youtube.com/watch?v=kpmkZIcD7fc">2'03"007</a></td>
<td>そうめん</td> //look at here
<td><img src="http://mk7vrlist.altervista.org/flags/jp.gif" /></td>
<td>2013/06/30</td>
</tr>

I googled this and I saw that I simply need to put that tag with the charset attribute. By the way my webpage shows %u305D%u3046%u3081%u3093 instead of «そうめん». Do you know why?

Marc Audet's user avatar

Marc Audet

45.8k11 gold badges63 silver badges83 bronze badges

asked Aug 17, 2013 at 17:26

Alberto Rossi's user avatar

Alberto RossiAlberto Rossi

1,8004 gold badges36 silver badges57 bronze badges

3

Because either:

  • You have an HTTP header which specifies a different character encoding (HTTP headers take priority over meta elements) or
  • You haven’t saved the document using UTF-8 (you are just telling the browser that you are)

answered Aug 17, 2013 at 17:28

Quentin's user avatar

QuentinQuentin

905k124 gold badges1201 silver badges1329 bronze badges

4

Is your doctype HTML5

<!DOCTYPE html>

if not you have to use this for all other doctypes

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

answered Aug 17, 2013 at 17:37

Michael's user avatar

Thanks to all answerers, but I have had troubles solving it, as I saved the file in two editors (Leafpad and vim) as UTF-8, still getting weird characters in browser. The culprit was, as described here, the byte order mark, which seems not to be set by default in both the editors but has to be set explicitly in vim:

:set bomb

This solved the problem for me finally.

answered May 2, 2019 at 8:41

Esmu Igors's user avatar

Esmu IgorsEsmu Igors

2293 silver badges6 bronze badges

Главная кодировка HTML-страниц

По статистике на сегодня на 97,7 % сайтов в интернете используется кодировка текста UTF-8 (одна из кодировок Юникода). Источник этих данных:

https://w3techs.com/technologies/overview/character_encoding

Так что веб-разработчику (да и не только веб-разработчику) по умолчанию на сегодня рекомендуют писать код в кодировке UTF-8.

Как браузер узнаёт о кодировке HTML-страниц

В принципе, код на языке HTML может быть в любой кодировке, которую сможет прочитать клиент (обычно это браузер), но браузеру следует сообщить о кодировке HTML-страницы либо в заголовке HTTP-ответа (этот заголовок формирует веб-сервер, на котором находится запрашиваемая браузером HTML-страница), либо в коде самой HTML-страницы с помощью элемента <meta> с атрибутом charset внутри заголовка <head></head> HTML-страницы.

Известный сервис «Webhint» валидации HTML-страниц (доступен через инструмент разработчика «Issues» в моем браузере «Microsoft Edge» на движке «Chromium») даже рекомендует использовать одновременно оба способа сообщить о кодировке HTML-страницы браузеру:

https://webhint.io/docs/user-guide/hints/hint-meta-charset-utf-8/

В вышеуказанной статье это аргументируется тем, что веб-разработчик зачастую не имеет доступа к настройкам сервера. А если он не имеет доступа к настройкам сервера, то не сможет подправить эти настройки, если в них для HTTP-ответов не будет указана кодировка выдаваемых сервером HTML-страниц (а также файлов со стилями на языке CSS и файлов со скриптами на языке JavaScript). Поэтому веб-разработчику и рекомендуют указывать кодировку в самих HTML-страницах с помощью элемента <meta> с атрибутом charset.

Настройка кодировки в заголовках HTTP-ответов сервера

Я описывал выполнение таких настроек в отдельном посте, когда использовал локальный веб-сервер из набора «IIS» операционной системы «Windows 10 Pro» моего компьютера:

«Настройка веб-сервера из набора IIS, web.config, заголовки HTTP»
https://ilyachalov.livejournal.com/195468.html

В вышеуказанной статье я исправлял следующее предупреждение упоминавшегося выше сервиса «Webhint», полученное в инструменте разработчика «Issues» моего браузера:

'content-type' header charset value should be 'utf-8'

Тут подробнее:
https://webhint.io/docs/user-guide/hints/hint-content-type/

Также я описывал настройку заголовков HTTP-ответов при создании и запуске простейшего веб-сервера, написанного на языке JavaScript для запуска с помощью среды выполнения «Node.js»:

«Node.js: русификация примера с простейшим веб-сервером»
https://ilyachalov.livejournal.com/216391.html

Указание кодировки внутри HTML-страницы

В современном HTML (раньше было немного не так) это делается примерно следующим образом (соответствующий элемент выделен синим цветом):

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Название страницы</title>
</head>
<body>
  <!-- содержимое страницы -->
</body>
</html>

Такое указание кодировки описано в современном стандарте HTML:

https://html.spec.whatwg.org/multipage/semantics.html#charset

По этой же ссылке в стандарте HTML сказано, что указание кодировки HTML-страницы должно полностью входить внутрь первых 1024 байт HTML-страницы. Именно поэтому уже упоминавшийся выше сервис «Webhint» рекомендует располагать элемент <meta> с атрибутом charset первым внутри элемента head HTML-страницы (то есть как можно ближе к началу HTML-страницы).

Проверка кода на языке HTML валидаторами

Если вышеуказанный элемент <meta> с атрибутом charset определен не внутри первых 1024 байт HTML-страницы, то браузер, скорее всего, таки отобразит страницу верно. А вот HTML-валидаторы отметят этот факт как ошибку. Некоторые HTML-валидаторы даже требуют вхождения указанного элемента в первые 512 байт HTML-страницы, что вдвое меньше, чем требует современный стандарт HTML.

Лично я получил такую ошибку, когда в ходе анализа кода страницы написал большой комментарий перед формальным началом HTML-страницы (то есть перед элементом html). Сам такой комментарий не является ошибкой, но из-за его размера элемент <meta> с атрибутом charset оказался за пределами первых 1024 байт файла.

HTML-валидатор (https://validator.w3.org) выдал такую ошибку:

Error: A charset attribute on a meta element found after the first 1024 bytes.

Я убрал комментарий в другое место файла и элемент <meta> с атрибутом charset оказался в пределах первых 1024 байт файла. После этого указанный HTML-валидатор перестал выдавать эту ошибку.

Lumirt

При написании meta charset =»utf-8″ — вместо символов вопросы.


  • Вопрос задан

    более трёх лет назад

  • 545 просмотров

Посмотрите исходник этой страницы, здесь всё задано правильно. Но не забывайте файлы тоже сохранять в utf-8 без BOM и прочей ерунды.

Пригласить эксперта

Вероятно кодировка, указанная в HTTP-заголовке content-type отличается от реальной.

Это способ указания кодировки принятый в HTML5:
<meta charset="utf-8" />.

До него использовался такой вариант:

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

Подробнее про кодировки в HTML можно почитать тут: https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%B4%D…


  • Показать ещё
    Загружается…

04 июн. 2023, в 01:35

1500 руб./за проект

04 июн. 2023, в 01:25

40000 руб./за проект

03 июн. 2023, в 23:42

1500 руб./за проект

Минуточку внимания

Rocket Validator integrates the W3C Validator HTML checker
into an automated web crawler.

  • meta

  • charset

A <meta> tag has been found that is either malformed, or in a bad place within the document. Check its attributes and context.

For example, the following HTML contains a valid <meta> tag that is raising an issue because of bad context, caused by an <img> tag that shouldn’t be there:

<!DOCTYPE html>
<html lang="">
  <head>
    <title>Test</title>
    <img src="photo.jpg" alt="A smiling cat" />
    <meta charset="utf-8" />
  </head>
  <body>
    <p>Some content</p>
  </body>
</html>

If we fix that document and move the <img> tag within the body, the issue raised about <meta> disappears because it’s now in a valid context:

<!DOCTYPE html>
<html lang="">
  <head>
    <title>Test</title>
    <meta charset="utf-8" />
  </head>
  <body>
    <p>Some content</p>
    <img src="photo.jpg" alt="A smiling cat" />
  </body>
</html>

Learn more:

  • HTML Spec: the meta element

Related W3C validator issues

Проблемы с кодировкой на сайте

Проблемы с кодировкой на сайте

Одной из самых частых проблем, с которой сталкивается начинающий Web-мастер (да и не только начинающие), это проблемы с кодировкой на сайте. Даже у меня постоянно появляется при создании сайтов «абракадабра«. Но, благо, я прекрасно знаю, как эту проблему решить, поэтому всё привожу в порядок в течение нескольких секунд. И в этой статье я постараюсь научить Вас также быстро решать проблемы, связанные с кодировкой на сайте.

Первое, что стоит отметить, это то, что все проблемы с появлением «абракадабры» связаны с несовпадением кодировки документа и кодировки, выставляемой браузером. Допустим, документ в windows-1251, а браузер почему-то выставляет UTF-8. А уже источником такого несовпадения могут быть следующие причины.

Первая причина

Неправильно прописан мета-тег content-type. Будьте внимательны, в нём всегда должна находиться та кодировка, в котором написан Ваш документ.

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

Вторая причина

Вроде бы, мета-тег прописан так, как Вы хотите, и браузер выставляет именно то, что Вы хотите, но почему-то всё равно с кодировкой проблемы. Здесь, почти наверняка, виновато то, что сам документ имеет отличную кодировку. Если Вы работаете в Notepad++, то внизу справа есть название кодировки текущего документа (например, ANSI). Если Вы ставите в мета-теге UTF-8, а сам документ написан в ANSI, то сделайте преобразование в UTF-8 (через меню «Кодировки» и пункт «Преобразовать в UTF-8 без BOM«).

Третья причина

Мета-тег написан правильно, кодировка документа верная, но браузер почему-то настойчиво выбирает другую кодировку. Это уже связано с настройками сервера. Способ решения данной проблемы можно прочитать здесь: как задать кодировку в htaccess.

Четвёртая причина

И, наконец, последняя популярная причина — это проблема с кодировкой в базе данных. Во-первых, убедитесь, что все Ваши таблицы и поля написаны в одной кодировке, которая совпадает с кодировкой остального сайта. Если это не помогло, то сразу после подключения в скрипте выполните следующий запрос:

SET NAMES 'utf8'

Вместо «utf8» может стоять другая кодировка. После этого все данные из базы должны выходить в правильной кодировке.

В данной статье я, надеюсь, разобрал, как минимум, 90% проблем, связанных с появлением «абракадабры» на сайте. Теперь Вы должны расправляться с такой популярной и простой проблемой, как неправильная кодировка, в два счёта.

  • Создано 21.05.2012 13:43:04


  • Михаил Русаков

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Понравилась статья? Поделить с друзьями:
  • Message queuing service ошибка
  • Message not found ошибка
  • Mfg mode hp 404 как исправить ошибку
  • Mfd ошибка фольксваген туран
  • Mfd 45s320 w ошибка e3