Почему на сайте знаки вопроса вместо русских букв
Перейти к содержимому

Почему на сайте знаки вопроса вместо русских букв

  • автор:

Вопросы вместо русских букв

Здравствуйте. Начал переводить сайт на русский, но возникла проблема — вопросы вместо русских букв стало показывать. Проблема связана, думаю, с mysql, так как внутри сайта вопросы появляются вместо букв, только когда с базы данные. В базе поставил utf-8_bin, тоже не помогло. В чем может быть проблема?

Отслеживать
5,068 16 16 серебряных знаков 30 30 бронзовых знаков
задан 27 дек 2014 в 10:09
347 1 1 золотой знак 4 4 серебряных знака 15 15 бронзовых знаков
а на самом сайте какая кодировка?
27 дек 2014 в 10:20

здесь много факторов: кодировка файла, кодировка тега meta, кодировка базы, наличие запроса SET NAMES utf-8 или cp1251, заголовки header() и тд. нужно все проверять

27 дек 2014 в 10:29
htaccess написано utf-8 , в html text/html; charset=utf-8 @Perkovec @mountpoint
27 дек 2014 в 10:34
в базе русские буквы нормально отображаются?
27 дек 2014 в 10:48
да @mountpoint
27 дек 2014 в 11:01

5 ответов 5

Сортировка: Сброс на вариант по умолчанию

1) для Apache в .htaccess:

AddDefaultCharset utf-8 

2) для nginx в конфиге:

charset utf8; 

3) в html-документе:

4) необходимо все сущности (таблицы) установить в кодировку utf8_general_ci

5) если используете PDO:

new \PDO( 'mysql: host=localhost; dbname=db; charset=utf8;', 'user', 'pass' ) 

6) если всё ещё пользуетесь процедурным доступом к БД, то:

mysql_query('SET NAMES "utf8"'); 

7) в Вашем редакторе/IDE сохраняйте файл в кодировке utf8

Отслеживать
ответ дан 27 дек 2014 в 13:06
5,068 16 16 серебряных знаков 30 30 бронзовых знаков

$conn->set_charset(«utf8»); // у вас было mysqli_query(‘SET NAMES «utf8″‘) в другом месте return $conn; > Исправил в ru/inc/db.php, заработало

29 дек 2014 в 9:41

Если вы используете SET NAMES «utf8» и вообще кодировку utf8 то у вас в БД не будут сохраняться смайлы и прочий современный уникод. Не просто не будут сохраняться, а запросы будут заканчиваться ошибкой. Одумайтесь, уже 21 век на дворе!

11 апр 2018 в 0:50

Если не разберетесь с кодировкой из базы, то можете на невысоконагруженном проекте, например, конвертировать iconv налету все переменные.

Обновление

$out=iconv( mb_detect_encoding($in), 'UTF-8', $in) 

где-то как-то так:

$in — строка в любой кодировке
$out — строка в utf-8

Отслеживать
51.2k 86 86 золотых знаков 266 266 серебряных знаков 505 505 бронзовых знаков
ответ дан 27 дек 2014 в 11:30
79 5 5 бронзовых знаков
Сайт не высоко нагруженный @Михаил Колев
27 дек 2014 в 11:55
поздравляем, теперь ваш проект высоконагруженный )
27 дек 2014 в 23:02

У меня скрипты и html странички к ним крутились на виндовс серваке, а потом все на линукс перенесли и там вместо русского были ромбики с вопросами. Нашел сначала в нете вариант через notepad++ сам html фалик сохранять в спец кодировке. Но это не дело так с каждым делать. Решение такое, заходите в httpd.conf файл апача. (у меня по умолчанию /etc/httpd/conf/httpd.conf) И там в начале есть параметр AddDefaultCharset UTF-8 Я заменил UTF-8 на windows-1251 и далее рестартанул сервак systemctl restart httpd и русский заработал на страничках в браузере.

Отслеживать
ответ дан 1 июл 2019 в 13:27
Mikhail Sialiuk Mikhail Sialiuk
11 2 2 бронзовых знака

Проблема, скорее всего, в кодировке HTML редактора, которым вы пользуетесь. Редактор может выставлять кодировку записанного файла в соответствии с языковой версией Windows. Например, на английской версии редактор может записывать в ANSI, чего не понимается браузерами.

Решение: Кодировка HTML страницы должна совпадать с кодировкой указанной в HTML тэгом. Для универсальной UTF-8 которая сегодня используется по умолчанию в большинстве блогах и т.п. HTML страница начинается с тэгов типа

Тогда текстовый редактор должен записывывать в UTF8:

вопросы вместо русских букв

В HTML редакторе настройка может быть во время Save а может где-то в Settings а может вообще не быть.

Вместо русских букв знаки вопросов. UTF-8 без BOM

Вопрос: У меня на сайте вместо русских букв отображаются знаки вопросов. Подскажите что делать в этой ситуации.

Ответ: Знаки вопроса могут отображаться по причине не правильной кодировки на сайте. Если они в блоках, за которые отвечают установленные вами плагины, либо скрипты, то воспользуйтесь статьей Как задать кодировку в htaccess UTF-8 или windows-1251.

Если же речь идет о наличии знаков вопроса в добавленном вами русском тексте прямо непосредственно в файлы шаблона, то здесь может помочь простая операция по преобразованию файла в UTF-8 без BOM.

Для этого вам понадобится бесплатная программа Notepad++ (есть русская локализация), в которой необходимо открыть редактируемый файл шаблона и в верхнем меню программы Кодировки -> Преобразовать в UTF-8 без BOM .

utf8 без bom

После этого остается сохранить изменения и закинуть файл на хостинг. Теперь знаки вопросов исчезнут и будет нормально отображаться русский шрифт.

Ели все еще не понятно как преобразовывать в UTF-8 без BOM, то посмотрите видео.

Знаки вопроса «?» вместо русских букв

вопросительные знаки вместо букв

Если у вас Вопросительные Знаки ( ? ) вместо русских букв ( это проблемы кодировки ) при выводе информации на сайт из базы данных MySql, тогда смотрите далее:

Вопросительные знаки вместо русских букв

Это проблемы с кодировкой BD или выводом из базы данных.

Решение

1 В коде PHP, после обращения к базе mysql_connect(HostName,UserName,Password); добавляем строки:

mysql_query(«SET NAMES cp1251»);
mysql_query(«SET CHARACTER SET cp1251»);
mysql_query(«SET character_set_client = cp1251»);
mysql_query(«SET character_set_connection = cp1251»);
mysql_query(«SET character_set_results = cp1251»);

При этом Сам Apache может быть настроен по умолчанию на кодировку UTF8, дамп базы в формате utf8 без BOM, а сопоставление БД MySQL с utf8_general_ci

Если не помогло

2 Пробуем те же сроки, но меняем cp1251 на utf-8

Чтобы не гадать какую кодировку использовать cp1251 или utf-8 смотрим кодировку самого сайта и в настройках сервера и в настройках страницы:

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

Если опять ни чего не изменилось

3 Открываем вашу базу в PhpMyAdmin и смотрим . там тексты должны быть читаемыми. Если это не так — что то с импортом в базу . например: дамп базы в windows-1251 или UTF-8. Пробуете перезалить.

На моем сайте вместо русских символов одни знаки вопроса. Как это исправить?

Теперь при загрузке файла с базой данных (который, как правило, имеет расширение .sql) не забудьте выбрать в соответствующем выпадающем списке кодировку cp1251, и проблема должна исчезнуть.

Другие вопросы в разделе «Решение проблем»

  • Отчего возникает ошибка 403 (Forbidden)?
  • Отчего возникает ошибка 404 (Not Found)?
  • Отчего возникает ошибка 500 (Internal Server Error)?
  • Отчего возникает ошибка 503 (Service Temporarily Unavailable)?
  • Загружены файлы в кодировке UTF-8, но вместо русского текста в них «иероглифы». Как это исправить?
  • Почему не работает скрипт?
  • Служба техподдержки попросила меня прислать результаты трассировки и пинга. Как это сделать?
  • Служба техподдержки попросила меня проверить командой telnet, открыт ли порт. Как это сделать?
  • Как проверить сайт на вирусы?
  • На моем сайте обнаружен вирус. Что делать?
  • Почему вместо результатов работы PHP-скрипта я вижу лишь пустую белую страницу?
  • Почему вместо результатов работы PHP-скрипта скачивается файл index.php?
  • Почему у меня не работает SSI?
  • Общие вопросы о «Джино»
    • Основные вопросы о «Джино»
    • Оплата услуг
    • Основные вопросы по хостингу
    • Управление сайтом
      • Работа с файлами
      • FTP-доступ
      • Задания по расписанию (cron)
      • Доступ по SSH

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *