Вопросы вместо русских букв
Здравствуйте. Начал переводить сайт на русский, но возникла проблема — вопросы вместо русских букв стало показывать. Проблема связана, думаю, с 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 .
После этого остается сохранить изменения и закинуть файл на хостинг. Теперь знаки вопросов исчезнут и будет нормально отображаться русский шрифт.
Ели все еще не понятно как преобразовывать в 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
- PHP
- CGI
- MySQL
- Общие вопросы по MySQL
- phpMyAdmin
- Joomla!
- osCommerce
- Invision Power Board
- MODX
- WordPress
- Основные вопросы по доменам
- Регистрация доменов
- Перенос доменов
- Домены .рф
- Основные вопросы
- Редактирование сайта
- Основные вопросы
- Настройка почтовых клиентов
- Почтовый интерфейс (WebMail)