Здравствуйте, господа программисты! Помогите решить проблему. Хотел перенести сайт с хостинга на свой комп. Экспортировал базу, скачал файлы. Все работает, только кириллический текст, получаемый из базы, выводится в виде знаков вопроса. В PHPMyAdmin текст в базе отображается нормально. При добавлении данных в базу с сайта добавленный текст видится в PHPMyAdmin тоже в виде знаков вопроса. Кодировка файлов win-1251, сравнение таблиц стоит win-1251. В общем, на хостинге было все нормально, а при переносе стало вот так. Я работаю под денвером, который установлен на win 8. Мне кажется это именно из-за винды, так как в некоторых других прогах тоже проблемы с кодировкой, которых не было в винде XP. Подскажите, где что поправить, как решить проблему?
Кодировка соединения с базой на хостинге стояла utf-8 и все работало нормально. У себя тоже пробовал, ставил и utf и win1251, все равно проблема остается.
в браузере стоит автоматический выбор. Я пробовал менять, но не помогло. Главное, текст, который выводится не из базы, отображается нормально. И в обратную сторону так же: вводишь в форму страницы текст, который скрипт должен в базу положить. Заходишь в базу в phpmyadmin, а там в этой строке одни вопросики! Я уже пробовал экспорт с хостинга делать в другой кодировке и потом импорт себе в базу, но так вообще фигня какая-то отображается. Может так влиять то, что под виноуз8 денвер стоит? Я уж думаю дополнительно установить на ноут ХР и работать с нее )
без вариантов - надо прописать кодировку соединения. представь что "клиент" и "сервер" это два обдолбаных тупых чувака. они общаются посредством телефона. если они говорят на разных языках, то могут этого не понять, увы! поэтому "клиент" должен объявить: я буду разговаривать по английски (или русски - пох). в интернетах проблема гуглится как "set names". по последним данным самым правильным способом является вызов mysqli_set_charset или mysql_set_charset смотря что ты там используешь. здесь есть одна засада: после того как ты сделаешь всё правильно, те данные клоторые УЖЕ были записаны в базу, будут выглядеть плохо, т.к. записаны неправильно. это многих подталкивает к неправильным выводам и они продолжают ныть: "ничего не помогает, спасите-помогите". старое уже испорчено, ты работаешь на будущеее! Добавлено спустя 2 минуты 29 секунд: Код (PHP): $mysqli = new mysqli("localhost", "my_user", "my_password", "test"); // если ты такой странный, твои файлы имеют кодировку 1251, // то и соединение должно быть 1251 !!! $mysqli->set_charset("cp1251"); важно: даже если база и таблицы имеют настройку CHARACTER SET UTF8, если ты укажешь другую кодировку соединения, всё будет на лету перекодировано правильно! ты должен указывать ту кодировку, в которой твоя страница, а не ту, в которой твоя таблица. с поправкой на написание. для mysql правильно писать cp1251 или utf8 без дефисов. для заголовка http и для тега html пишем как windows-1251 и utf-8 Добавлено спустя 6 минут 48 секунд: что денвер -- да, может. что windows8 -- нет, версия винды влиять не должна. в настройках денвер по умолчанию прописано отсылать заголовок "Content-type: text/html; charset=windows-1251", в интернетах проблема гуглится как AddDefaultCharset. поэтому если ты ЯВНО не пропишешь иное, браузер будет считать, что получил страницу в кодировке 1251. и П0X* КАКОЙ У ТЕБЯ НА СТРАНИЦЕ <meta ...>. заголовки http имеют для браузера высший приоритет. в то же время на большинстве хостингов никаких умолчаний на этот счет нет!
прописал в htaccess кодировку 1251. прописал в файле скрипта mysql_set_charset ("cp1251") Не пашет падла! )
Ты спешишь с выводами. Просто совмещаю приятное с полезным. Но это отступление... По теме: Я сделал следующее. Так как кодировка сайта 1251 и таблицы в базе тоже 1251, я сделал дамп базы на хостинге в кодировке 1251. Это база хостинга Создал на своем компе базу (сравнение 1251), импортировал таблицы, получил следующее (это база на компе): На страницах сайта аналогично! При этом я сделал set_names и adddefultcharset, короче везде прописал 1251. Что я сделал не так?? Добавлено спустя 16 минут 8 секунд: Спасибо тебе, хоть ты и злой сегодня! ) Заработало, зараза! Я правда так и не понял, что помогло, но сделал дамп в utf, создал базу в utf, импортировал таблицы, при этом всякие set_names остались 1251!
на здоровье. чтобы понять перечитай что я тебе писал. всё прямо по писанному! Добавлено спустя 1 минуту 4 секунды: