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

Обновлено: 08.07.2024

2 Ответ от Hanut 2009-05-05 14:09:31

Не здесь ли собака покопалась.

Различие версий настораживает. К сожалению утвердительно говорить, что это причина, я не могу.

В какой кодировке страницы сайта?
В какой кодировке таблицы в БД?

3 Ответ от jeck111 2009-05-05 14:51:15

сделал запрос, и показываю вывод:
на локалке:

Variable_name Value
character_set_client latin1
character_set_connection latin1
character_set_database latin1
character_set_results latin1
character_set_server latin1
character_set_system utf8
character_sets_dir C:\Program Files\MySQL\MySQL Server 4.1\share\charsets/

на удаленном сервере:

Variable_name Value
character_set_client cp1251
character_set_connection cp1251
character_set_database cp1251
character_set_filesystem binary
character_set_results cp1251
character_set_server cp1251
character_set_system utf8
character_sets_dir /usr/local/share/mysql/charsets/

вижу что совпадений почти нет, и сразу вопрос где это можно поменять?

В какой кодировке страницы сайта?

В какой кодировке таблицы в БД?

Вот здесь я не уверен что правильно понимаю о чем Вы спрашиваете, поэтому пишу все:
Таблицы: тип: MyISAM сравнение: cp1251_general_ci
и вот это на домашней странице pma:
MySQL-кодировка: UTF-8 Unicode (utf8)
Сопоставление соединения с MySQL: UTF-8_Unicode_ci

4 Ответ от Hanut 2009-05-05 15:14:30

jeck111
На локальном сервере в конфигурационном файле MySQL (my.ini) внесите следующие изменения:

5 Ответ от jeck111 2009-05-05 15:30:27

сделал, перезапустил mysql, apache (на всякий случай), результата не дало, все теже знаки вопроса.

6 Ответ от Hanut 2009-05-05 18:07:55

7 Ответ от jeck111 2009-05-05 18:24:02

Variable_name Value
character_set_client cp1251
character_set_connection cp1251
character_set_database cp1251
character_set_results cp1251
character_set_server cp1251
character_set_system utf8
character_sets_dir C:\Program Files\MySQL\MySQL Server 4.1\share\charsets/

8 Ответ от jeck111 2009-05-05 18:31:43

еще заметил одно различие между локалкой и удаленным:

Таблица Действие Записи Тип Сравнение Размер Фрагментировано
локал:
Таблиц: 10 Всего 370 InnoDB cp1251_general_ci 208.9 КБ 0 Байт
удаленный:
Таблиц: 10 Всего 370 MyISAM cp1251_general_ci 234.3 КБ 3.0 КБ

это нижняя строка, которая жирным выделена в закладке "Структура", хотя напротив самих таблиц и там и там стоит MyISAM

ЗЫ. Просто подумал, может это будет полезно.

9 Ответ от Hanut 2009-05-05 19:48:51

jeck111
Если вместо данных выводятся вопросики - значит в БД данные не должны быть в читаемом виде. Еще раз: в phpMyAdmin вы должны видеть кириллицу, а не вопросики или крякозябы, как на удаленном, так и на локальном сервере.

Нижняя строка означает изначальный тип создаваемых таблиц. Если вы хотите, чтобы и на локальном сервере все создаваемые таблицы имели тип MyISAM, поправьте в my.ini строку:

В данном случае, это не существенно, так как импортируемый дамп имеет прописанную кодировку для каждой таблицы.

10 Ответ от jeck111 2009-05-05 22:12:48

Спасибо за содействие, вопрос решен:
после коннекта к базе, и перед всеми запросами вставил код:

Возможно вопрос был задан не на том форуме, ну все равно спасибо Hanut за помощь.

11 Ответ от mayerz 2009-11-22 16:49:46

Добрый день. У меня похожая проблема такчто не хочу создавать отдельный топик.
После обновления движка DLE вся кирилица стала отображатся знаками вопросов, при чем как в самой бд так и на сайте. Пробовал менять кодировку через пма на cp1251_general_ci, вроде отображается что все поменялось но при просмотре данных всеравно ". "
Уже даже не знаю что еще пробовать.

character_set_client latin1
character_set_connection latin1
character_set_database latin1
character_set_filesystem binary
character_set_results latin1
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/

12 Ответ от Hanut 2009-11-22 17:27:54

mayerz
Посмотрите как кириллица выглядит в phpMyAdmin, если там будут вопросики, то данные уже не вернуть, если крякозябы, то надо сделать дамп и попробовать его перекодировать. Если будете заниматься перекодировкой, то создайте отдельную ветку для обсуждения, постараемся помочь.

Менять сравнение на таблицах в phpMyAdmin не надо.

13 Ответ от Feniksss 2009-11-27 09:09:06 (изменено: Feniksss, 2009-11-27 09:10:12)

Причём при проверке кодировки базы данных(show variables like "character_set_database";), и таблицы(show create table `table`) выводит: utf8
ENGINE=MyISAM DEFAULT CHARSET=utf8
И кодировка каждого поля тоже utf8_unicode_ci
Вот. не знаю в чём проблема. перекодировать базу данных мне не надо, мне надо создать таблицу, и вставлять в неё поля на кириллице, но этого не получается, в браузере пишет вопросы, а в PMA всё нормально отображается.
Да, в PMA кодировки все стоят utf8_unicode_ci.

14 Ответ от Hanut 2009-11-27 13:48:07

Feniksss
Вы все правильно сделали, только скрипты (кроме phpMyAdmin) нельзя подключать под root, для них создайте отдельного пользователя и назначьте ему только необходимые права (не выставляйте права из раздела "Администрирование").

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


5,080 14 14 серебряных знаков 30 30 бронзовых знаков 347 1 1 золотой знак 3 3 серебряных знака 14 14 бронзовых знаков здесь много факторов: кодировка файла, кодировка тега meta, кодировка базы, наличие запроса SET NAMES utf-8 или cp1251, заголовки header() и тд. нужно все проверять htaccess написано utf-8 , в html text/html; charset=utf-8 @Perkovec @mountpoint

1) для Apache в .htaccess:

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

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

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

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

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

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


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

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

Обновление

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

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


49.4k 72 72 золотых знака 249 249 серебряных знаков 480 480 бронзовых знаков


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

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

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

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

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

Решение проблемы с кодировкой сайта html

Подобные проблемы обычно связаны с несовпадением кодировки сайта и веб-браузера. Например, в документе мы четко указали, что сайт использует кодировку UTF-8, однако браузер думает, что кодировка нашего сайта Windows-1251. В конечном результате мы видим вместо текста различные, так называемые, кракозябры и вопросительные знаки. Но у каждой проблемы есть источник возникновения, и конечно же, должно быть и решение проблемы.

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

Источник:

Самым банальным источником проблемы часто является невнимательность вебмастера. Который по то или иной причине прописал в неправильной форме кодировку документа. Вследствие чего возникают проблемы.

Решение:

Решение данного недоразумения вполне простое. Будьте внимательны и прописывайте кодировку документа правильно. Как это сделать я рассказывал в этой статье.

Вместо букв кракозябры: Ошибка.

Источник:

В данном случае проблема также может возникнуть из-за невнимательности или неопытности. Заключается проблема в том, что вроде бы мета тег прописан правильно в документе, но при сохранении, по какой-то причине документ был сохранен не в той кодировке, которая указана. То есть, например, мы пишем документ в UTF-8, о чем сразу указали, с помощью мета тега, но при сохранении или создании документа забыли выставить кодировку UTF-8, и она осталась по умолчанию Windows-1251. И естественно вместо текста в браузере мы увидим кракозябры.

Решение:

Не забывайте сразу, при создании документа указывать верную кодировку. Или же преобразовывайте документ в правильную кодировку, при сохранении. О том, как это сделать, мы также уже говорили ранее, в этой статье.

Вопросительные знаки вместо букв: Задать кодировку в htaccess.

Источник:

Бывают случаи (не часто), когда мы правильно прописываем кодировку документа и сохраняем в правильной кодировке, которая совпадает с указанной. Но в браузере все равно видим различные вопросительные знаки, иероглифы или кракозябры. В данном случае вина может лежать на используемом хостинге. Возможно, кодировка, указанная на сервере не совпадает с кодировкой, в которой написан код нашего сайта.

Решение:

В данном случае мы можем задать кодировку сервера самостоятельно, с помощью файла htaccess. Для этого, открываем файл htaccess, в нужной папке сайта. Если нет, то создаем. И добавим в самый конец строку в зависимости от кодировки, используемой на сайте.

Windows-1251:

Слышал, еще бывают проблемы с кодировкой базы данных, но сам не сталкивался, поэтому и рассказать ничего не могу.

Надеюсь, хотя бы один из этих способов сможет помочь решить проблемы с кодировкой сайта. А у меня на этом все.

При переносе дампа или после нескольких манипуляций в базе неожиданно появились знаки вопросов в MySQL вместо русских букв? Это известная и распространённая проблема в MySQL старших версий.

🟥 Это руководство поможет предпринять быстрые шаги в исправлении ситуации.

Мы рассмотрим конкретные действия для быстрого решения. Обратите внимание на официальное руководство по кодировке в MySQL, чтобы вы смогли разбираться в сути и выполнять рекомендации осознанно.

Исправляем знаки вопросов в MySQL на русские буквы

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

  1. Дождитесь выполнения соединения с сервером
  2. Введите запрос:
    set names кодировка

«кодировка» — это параметр кодировки, в которой вы выводите данные страницы на сайте.

То есть запрос для UTF-8 должен выглядеть так:
set names utf8

Обратите внимание, что запросы «set names» по факту не влияют на кодировку, которая используется функцией mysql_real_escape_string . Поэтому рекомендуется применять установку кодировки через mysql_set_charset() вместо запроса «set names» . Но даже если вы проигнорируете эту рекомендацию, то для Uta8 и других однобайтных кодировок ничего плохого не последует.

Исправление проблемы кодировки MySQL, если запрос SET NAMES не помог

Перед тем, как изменить кодировку MySQL, вновь выполните запрос «Set Names», но уже с указанием кодировки таблицы (мы должны её выяснить).

  1. Причина кроется в том, что для таблиц настройка в одной кодировке, а данные в них — в другой.
  2. Попробуйте начать с простого решения — того же запроса «Set Names», но в кодировке таблицы.
  3. Для этого задайте запрос для названия вашей таблицы:
    show create table `table`
  4. Используйте полученную кодировку в запросе «Set Names»:
    SET NAMES кодировка

    «кодировка» — это параметр, который показал результат запроса « Show Create Table » из пункта 3 ( DEFAULT CHARSET=кодировка ).
  5. Так вы уберёте «крякозябры» и знаки вопросов из MySQL, настроите правильную отдачу и запись русских букв в данных (главное, чтобы у самой веб-страницы была соответствующая кодировка), но проблему сортировки и поиска пока не решите. Идём дальше.

Теперь, зная кодировку таблицы (например, latin1 ) и имея данные в той же кодировке, мы должны изменить фактическую кодировку данных.

  1. Через mysqldump создайте дамп базы данных.
  2. Используйте эту команду, в которой вместо слова «кодировка» вставьте параметр, выясненный из кодировки таблицы:
    mysqldump -uUSERNAME -pPASSWORD DB_NAME --allow-keywords --create-options --complete-insert --default-character-set=кодировка --add-drop-table > dump.sql
  3. Главное не перепутать кодировку таблиц с кодировкой данных.
  4. Проверьте дамп на правильное отображение кодировки уже в формате данных таблицы, а не самой таблицы, как в пункте 3 (то есть уже не l atin1 , а utf8 , например). Скопируйте бэкап дампа отдельно.
  5. В дампе найдите оператор «Create Database» и проверьте, правильная ли в нём кодировка.
  6. Если нет, то исправьте. Тоже самое можно (и лучше сделать) с оператором «Create Table».
  7. Используйте эту команду для заливки дампа, где «кодировка» — параметр данных таблицы ( utf8 , а не latin1 из нашего примера):
    mysql -uUSERNAME -pPASSWORD DB_NAME --default-character-set=utf8 < dump.sql
  8. На веб-странице сайта найдите функцию mysql_connect , затем mysql_select_db и ниже их размещения добавьте строчку, где «кодировка» — это параметр данных таблицы, а не самой таблицы:
    mysql_query("SET NAMES кодировка")

Ничего не помогает, проблема кодировки MySQL так и осталась

Объёмный wiki-раздел по кодировке MySQL составили белорусские коллеги, где вы можете получить исчерпывающее описание процесса правильного создания баз данных и таблиц. Ведь именно в этом процессе кроются все причины возникновения проблемы со знаками вопросов MySQL и «крякозябрами» вместо русских букв.

Также обратите внимание и на эти моменты при работе с базами данных

  • правильная ли задана кодировка при создании таблиц (можно использовать любую, но она должна отражать кодировку данных в таблице);
  • правильная ли кодировка у скрипта, работающего с базой данных (кодировка веб-страницы и скрипта должна быть одной);
  • правильная ли кодировка у самого сайта (у веб-страницы и заголовка «Content-Type» сайта она должна быть общая);
  • в правильной ли кодировке сохраняются данные на веб-странице через редактор (выберите в редакторе нужную кодировку, следите за этим).

Не хотите самостоятельно разбираться в настройке MySQL и оптимизировать работу ИТ-инфраструктуры предприятия?

Передайте заботы о программном обеспечении в компанию ИТ-аутсорсинга ZEL-Услуги с полноценным ИТ-аудитом и экспертной поддержкой по любым техническим вопросам и задачам.

Читайте также: