| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Базы Данных > кодировка mysql |
| Автор: usverishe 5.9.2006, 14:04 | ||||
| Добрый день, есть такая проблема, текст записываеться и выводиться из бд в виде непонятных кракокозябл. кодировка на странице windows-1251 в бд cp1251-general_ci. Вся странность в том, что если поставить вид страницы в UTF-8, всё нормально. Убедительная просьба, в поиск не посылать, перепробовал всё и
и
помогите новичку плз. |
| Автор: shopen 5.9.2006, 14:14 | ||
а вот так пробовал?
|
| Автор: usverishe 5.9.2006, 14:18 | ||
shopen, пробовал, и так:
пробовал... |
| Автор: shopen 5.9.2006, 14:27 |
| ты базу импортировал с локально хоста или как? |
| Автор: usverishe 5.9.2006, 14:31 |
| она пока там и лежит. ....[censored 6] фигня какая-то но всё само-собой исправилось.... хрен знает что происходит?! |
| Автор: shopen 5.9.2006, 14:34 |
| ну и гуд |
| Автор: usverishe 5.9.2006, 14:39 |
| И как её решить? (на будушее) |
| Автор: shopen 5.9.2006, 15:05 |
| при импорте через пхпадмин указываешь кодировку 1251 и после соединения с базой пишешь mysql_query('SET character_set_results="cp1251"'); такая вот общая схема |
| Автор: usverishe 5.9.2006, 15:12 |
| спасибо за совет, а проблема вновь вернулась и появляеться через раз?!?!? т.е. один раз нормальный текст, один раз нет, самое обидное, что немогу понять что меняеться! |
| Автор: shopen 5.9.2006, 15:20 |
| думаю если через раз появляется, значит проблема не в базе. ты под каким браузером смотришь? попробуй на разных |
| Автор: usverishe 5.9.2006, 15:26 |
| попробовал под лисой, и оперой та-же фигня |
| Автор: shopen 5.9.2006, 16:22 |
| ну блин, незнаю, через пхп админ данные в таблицах нормально отображаются? и где ты пишешь: mysql_query('SET character_set_results="cp1251"'); ? сразу после соединения с базой? |
| Автор: Гриша 5.9.2006, 21:42 |
| http://phpclub.ru/faq/wakka.php?wakka=MySql&v=mrb |
| Автор: usverishe 5.9.2006, 22:37 |
| Гриша, спасибо конечно, но я всегда пользуюсь я.ру перед тем, как задать вопрос. shopen, в phpmyadmin те-же крокозябли mysql_query('SET character_set_results="cp1251"'); пищу сразу после конекта, может писать после выбора бд? |
| Автор: -=Ustas=- 5.9.2006, 23:22 | ||
Если ты делаешь дамп с локли, то нафиг, никаких всяких там пхпмайадминов!!!
Теперь. Сервак твой или нет? Если нет, то желательно было бы узнать настройки my.cnf Как ты заливаешь этот дамп? Шел-доступ есть? |
| Автор: usverishe 6.9.2006, 13:36 |
| -=Ustas=- , shopen Спасибо учту на будуюшее, косяк оказался в самой странице, стоило убрать meta с charset, и всё заработало |
| Автор: MaliceInWonderland 19.4.2007, 23:54 | ||
| аналогичная проблема. кодировка базы MySQL: cp1251 php <meta http-equiv="Content-Type" content="text/html; charset=Windows-1251"> mysql_query('SET NAMES "cp1251"') итог: ?????®? ?¤ ?? mysql_query('SET character_set_results="cp1251"')+
пробовала. |
| Автор: -=Ustas=- 20.4.2007, 08:41 | ||
А если так:
|
| Автор: capitan 20.4.2007, 15:04 | ||
Народ, не подключайтесь к базе с рутовым паролем. Создайте пользователя с урезанными правами, перегрузите мускул и будет Вам счастье.
|
| Автор: MaliceInWonderland 20.4.2007, 19:06 | ||||
сообщения об ошибке не выдает.
залила базу еще раз. установила кодировку MySQL: cp1251 заработало. но при условии: <meta http-equiv="Content-Type" content="text/html; charset=cp866"> почему DOS? |
| Автор: MaliceInWonderland 20.4.2007, 22:47 | ||
cp1251 устанавливаю для конкретной базы. alter DATABASE db DEFAULT CHARACTER SET cp1251. думаю проблема здесь: пытаюсь изменить кодировку
проверяю SHOW VARIABLES LIKE `char%'; кодировка изменилась с latin1 на cp1251. прописываю В my.cnf MYSQL 4.1. [mysqld] default-character-set=cp1251 перезапускаю mysql command line client. изменения не сохранились. HOW VARIABLES LIKE `char%' выдает latin1 |
| Автор: INHazeR 22.4.2007, 19:34 | ||
| Нашел вот такое решение проблемы: Если Вам необходимо хранить в базе данных строки в кодировке, отличной от английской, то придется немного разобраться с кодировками - дело достаточно тонкое и не совсем тривиальное. Итак, по умолчанию для всех обьектов базы устанавливается кодировка latin1, и если в поле с такой кодировкой запихнуть русские данные, то вместо символов Вы будете видеть знаки вопроса. Для избежания данной проблемы достаточно установить при создании базы нужную Вам кодировку: CREATE DATABASE yourbase CHARACTER SET ‘cp1251′ в этом случае все поля по умолчанию будут иметь именну эту кодировку, если при создании базы или поля не указать иную. Тоесть, при создании базы с нуля достаточно укзать ее кодировку и все будет нормально. Но если Вы модифицируете уже созданную ранее базу, то изменение ее кодировки не приведет к изменению кодировок уже созданных полей - их придется менять вручную, посредством следующей комманды: ALTER TABLE students CHANGE name name varchar(100) CHARACTER SET ‘cp1251′ Типы полей надо оставить прежними, нужно только изменить кодировку(CHARACTER SET). Для корректной работы с кодировками осталась одна вещь - после установления соединения необходимо указать требуемую кодировку с помощью запроса: SET NAMES cp1251; Кстати, полный список кодировок, которые поддерживает Ваш сервер, можно получить с помощью комманды SHOW CHARACTER SET; Таким образом, моя БД в cp1251, страница тоже в cp1251:
Результат - непонятные символы. Если сменить кодировку страницы на cp866, то нормально отображаются результаты запроса из БД (в правильной кодировке), но вся остальная страница, разумеется, отображается неверно. Итак, может ли кто-нибудь дать этому внятное объяснение? |
| Автор: Glip 22.4.2007, 21:37 | ||
| есть вероятность что перекодирует веб сервер. http://www.faqs.org/rfcs/rfc2616.html
точнее кодировка задается в заголовке формируемом веб сервером. у apache можно почитать про AddDefaultCharset у nginx - charset |