Проблемы с кодировкой (Страница 1 из 2)
Я начал учить PHP и вот 3 дня назад столкнулся с проблемой,когда я делаю выборку из бд у меня выводится некоторое количество вопросов. Не поймите меня неправильно я уже 3 дня над этим бьюсь пробовал многое множество способов для решения данной проблемы(в том числе многие из них я нашёл на вашем форуме) может быть я что то нетак делаю ?подскажите
2 Ответ от Hanut 2011-09-02 10:53:50- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,713
1) Посмотрите как данные выглядят в phpMyAdmin и какая указана кодировка таблиц в БД.2) В какой кодировке страницы сайта и какой прописан мета-тег кодировки.3) Проверьте, чтобы скрипт подключался не под root. Выделите для скрипта отдельного пользователя назначив ему права на требуемую БД.4) В скрипте, сразу после функции подключения mysql_connect пропишите строку устанавливающую кодировку соединения с MySQL. Для windows-1251 будет cp1251, для utf-8 будет utf8.
3 Ответ от vaims 2011-09-02 15:27:11 (изменено: vaims, 2011-09-02 15:28:41)- Зарегистрирован: 2011-09-01
- Сообщений: 7
1)Кодировку при создании таблицы я ставил 1251_general_ci извиняюсь но я недопонял в смысле как они выглядят ?2)Кодировка сайта utf-8 <meta http-equiv="Content-Type" content="text/html"; charset=utf-8" />Вот код
echo $myrow["lastname"];3)Подключаюсь я не под root 4)
Насколько я понял вы вот это имели в виду?может я что то не допонял ?
4 Ответ от Hanut 2011-09-02 20:25:29- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,713
1)Кодировку при создании таблицы я ставил 1251_general_ci извиняюсь но я недопонял в смысле как они выглядят ?
Вас должно было смутить, что в БД кодировка 1251_general_ci, а страницы сайта в utf-8. Создайте таблицы в кодировке utf8_general_ci. Это должно решить проблему.
Я имел в виду - как выглядит кириллица в phpMyAdmin, можете ли вы ее прочесть, или там крякозябы.
Еще один момент - не только под root нельзя подключаться, но под любым пользователем имеющим глобальные привилегии из раздела администрирование. Проверьте пользователя admin, чтобы у него не было лишних привилегий.
5 Ответ от vaims 2011-09-02 22:26:06- Зарегистрирован: 2011-09-01
- Сообщений: 7
Уважаемый ханут сделал всё как вы сказали результат тот-же +(( А в базе данных всё норм ввёдённые символы выглядят нормально +)
6 Ответ от Hanut 2011-09-02 22:29:04- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,713
ввёдённые символы выглядят нормально +)
Вы сменили кодировку таблиц на utf8? Если сменили, то посмотрите как выглядят новые данные, а не те, что были записаны ранее.
7 Ответ от vaims 2011-09-03 12:28:53- Зарегистрирован: 2011-09-01
- Сообщений: 7
Нет я просто создал новую таблицу(старую я удалил).
8 Ответ от Hanut 2011-09-03 13:26:24- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,713
Нет я просто создал новую таблицу(старую я удалил).
И какая теперь кодировка у таблиц?
9 Ответ от vaims 2011-09-03 14:03:35 (изменено: vaims, 2011-09-03 14:29:46)- Зарегистрирован: 2011-09-01
- Сообщений: 7
- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,713
Все хорошо. Проблем быть не должно.
Проверьте кодировку страницы скрипта, она должна быть UTF8. Проще всего увидеть кодировку файла в редакторе Notepad++, снизу, в статусной строке, где будет либо UTF8, либо ANSI.
11 Ответ от vaims 2011-09-03 16:48:58- Зарегистрирован: 2011-09-01
- Сообщений: 7
- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,713
Больше нет никаких идей, кроме прав из раздела "Администрирование" у пользователя admin.
13 Ответ от vaims 2011-09-04 08:35:37- Зарегистрирован: 2011-09-01
- Сообщений: 7
Права я также дал только самые необходимые .. ладно попробую на ноуте
14 Ответ от Серёг@6696rus 2012-02-03 21:33:41- Зарегистрирован: 2012-02-02
- Сообщений: 7
Видимо мы с vaims пользуемся одинаковым учебным материалом, но у нас немного различные трудности. В составе материалов были MySQL-3.23.53 (phpMyAdmin-2.5.6) и PHP-4.3.9 и Apache-3.11.0.0. Загвоздка возникает в том же месте, что и у vaims (выборка из базы и вывод данных из базы в цикле). Когда я в адресной строке браузера (Opera 11.51), прописываю localhost/php/mysql.php, то у меня данные отображаются так:
Поскольку с MySQL я пока что даже не на Вы, а на Ваше Величество, прошу объяснить, как тут поступить: мне говорили про переконвертацию базы, но для меня пока что это как заклинание непереводимое. Либо может поставить другие версии программ (только не знаю насколько будут расхождения в таком случае с учебными материалами)?
15 Ответ от Hanut 2012-02-03 22:19:29- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,713
то у меня данные отображаются так
Пока я вижу только одну проблему - кодировка скрипта utf8, кодировка данных в БД cp1251. Очевидно, что с такими условиями ничего работать не будет, поэтому проверьте кодировку файла скрипта, для чего откройте его в Notepad++ и посмотрите в строке статуса кодировку и в случае необходимости смените ее на ANSI, что позволит работать с cp1251 в БД.
Разумеется, в метатеге кодировки в скрипте должна быть указана кодировка windows-1251.
16 Ответ от Hanut 2012-02-04 12:44:39- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,713
Когда поменял на ANSI (если в данном случае это нужно было делать)
Это надо было сделать, все правильно.
Теперь посмотрите какую кодировку показывает в браузере и какие данные выводятся в искаженном виде, те что в скрипте, или те что в БД.
17 Ответ от Серёг@6696rus 2012-02-04 12:45:48- Зарегистрирован: 2012-02-02
- Сообщений: 7
прошу прощения, я не конвертировал там, а энкодировал. сейчас получилось
18 Ответ от bad956 2012-04-27 03:52:58- Зарегистрирован: 2012-04-27
- Сообщений: 1
Hanut, Огромная благодарность. (зарегистрировался только чтоб поблагодарить ) Прям точь-в-точь та же проблема что и у Серёг@6696rus! Несколько дней не вылезал из форумов, обучающих материялов, менял скрипты, вставлял всякие. mysql_set_charset( 'utf8' );echo iconv( 'cp1251', 'utf-8', 'Текст!' );