![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| EasyTask |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 26.7.2010 Репутация: нет Всего: нет |
Всем привет. У меня такая проблема: я не умею создавать корректные базы MySQL =) Все началось с того я решил завести базу под свой движок. MySQL на локалхосте полностью настраивал руками (в смысле не пользовался денвером и аналогами), по началу были какие то проблемы с кодировками, но я их быстро решил. И так, сейчас у меня в конфиге mysql написано следующее:
MySQL-кодировка: UTF-8 Unicode (utf8) Как на базе этого поднять базу которая будет корректно работать с русским текстом? Прежде чем создавать базу я погуглил и напршел к выводу - ВСЕ должно быть в кодировке UTF-8. Я создал таблицы и базу используя в параметре сравнение эту же кодировку. После чего, заполнил базу через phpmyadmin. Мое удивление было велико когда я обнаружил что при выводе значений на сайт русские буквы символами "?". Не долго думая я опять поискал в гугле решение и нашел: добавить в скрипт строчки:
После чего вывод стал нормальный. Но как только я стал писать код для добавление информации в базу через веб интерфейс я столкнулся с еще более интересно проблемой: При попытке добавить строку содержащую русские или английские буквы ничего не добавляется Если в качестве значений пишу цифры - все ок. Я считаю что во всем виновата кодировка. Сначала я хотел везде поменять ее на "cp1251", но оказалось что на хостинге в конфиге тоже указана UTF-8, то есть так и так мне придется настраивать базу в условиях "Кодировка по умолчанию UTF-8". Пожалуйста, помогите разобраться какая должна быть: Default charset? Какие сравнения указывать при создании базы? Таблицы? Какой код писать в файл подключения? Заранее всем большое спасибо! |
|||
|
||||
| enoff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 30.6.2010 Где: Санкт-Петербург Репутация: нет Всего: 13 |
Все правильно,
ну так почему тогда ??? Вместо трех запросов можно делать один:
Везде должно быть utf-8. Скрипты, данные, кодировка у таблиц. |
|||
|
||||
| EasyTask |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 26.7.2010 Репутация: нет Всего: нет |
Без этого кода у меня не выводятся русские буквы. В общем окончательно запутался :((( На запрос:
Получаю: Если добавляю из PhpMyAdmin - Значение вставляется в базу, но на сайте не корректно выводиться Если добавляю с сайта - не попадает в базу Если меня в браузере кодировку (по умолчанию стоит cp1251) - Вижу русские буквы, не вижу остального. Я понял так. В браузере у меня CP1251, в базе UTF-8. Задача приравнять одно к другому, но как это сделать? Если я пропишу на сайте кодировку UTF-8 он будет не корректно отображаться. Если делать базу в cp1251, то как? Если у меня и на локалхосте и на сервере дефолт - UTF-8? Да и к тому же везде советуют ставить UTF-8. |
||||
|
|||||
| enoff |
|
||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 30.6.2010 Где: Санкт-Петербург Репутация: нет Всего: 13 |
С кодировкой определитесь. utf-8 или windows-1251?
На хостинге написано utf-8? Вот тогда и делайте все в utf-8. Создайте таблицы, при создании указывайте utf-8. php-скрипты сохраните в кодировке utf-8. В самом начале скриптов до любого вывода отправте заголовок
В скриптах после mysql_connect()
вставте из скрипта данные
Потом прочитайте и выведете их. Если браузер пытается отобразить не как utf-8, то в хтмл пропишите
Добавлено через 3 минуты и 29 секунд И все запросы к mysql делайте пока так:
Позволит увидеть ошибки в запросах, если есть. |
||||||||||
|
|||||||||||
| EasyTask |
|
||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 26.7.2010 Репутация: нет Всего: нет |
UTF-8
Да, я все это уже сделал, но проблема осталась. В файле подключения к бд у меня стркоа:
В файле где выводиться база:
Вот это не понял как. Вроде сохраняю все как обычно в Notepad++. Теперь такая проблема - Захожу на сайт, не вижу русские буквы. |
||||||||
|
|||||||||
| enoff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 30.6.2010 Где: Санкт-Петербург Репутация: нет Всего: 13 |
Не знаю, как в notepad++, у меня vim, так что мои советы мало тут помогут
Обычно в диалоге открытия файла можно указать кодировку. Нажмите "Сохранить как...", тоже должна быть возможность указать кодировку. В меню где-нибудь возможно поменять. Иногда в строке состояния (внизу) можно поменять. |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 9 Всего: 315 |
это стандартная проблема при работе с phpmyadmin. эту систему очень часто не могут настроить в корректную работу с кодировками.
если ввод данных осуществляется не только через phpmyadmin, а с помощью самописного движка или некоторой CMS, то рекомендовал бы перейти на неё. это полезно ещё с той точки зрения, что можно кого-нибудь наделить правами, чтобы он уже вставлял данные. а в phpmyadmin опять же будет проблема, но уже с разграничениями прав очень советую уйти от phpmyadmin, если есть возможность |
|||
|
||||
| EasyTask |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 26.7.2010 Репутация: нет Всего: нет |
Такой возможности к сожалению нет :(( Да тут не столько в PMA дело, сколько в связке браузер - mysql
если кодировка страницы cp1251 - Я вижу все кроме русских букв из базы если кодировка страницы UTF-8 - Я вижу строки из базы, но не вижу остальных русских букв на сайте Щас дотыкал стало вообще так выглядеть: http://s40.radikal.ru/i090/1009/4d/07262abff2ab.jpg Выходит что щас у меня вообще везде стоит UTF-8 и я имею: - Не выводятся русские буквы из скрипта - Не выводятся русские буквы из БД - В БД посредством скрипта русские буквы не попадают |
|||
|
||||
| enoff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 30.6.2010 Где: Санкт-Петербург Репутация: нет Всего: 13 |
браузер ничего не знает о mysql.
Он даже ничего не знает о php. забудьте про pma, все удалите и сделайте еще. Вставьте данные из своего скрипта. (обязательное условие - кодировка файла). |
|||
|
||||
| EasyTask |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 26.7.2010 Репутация: нет Всего: нет |
Что именно я должен сделать еще? Удалить БД или что?
|
|||
|
||||
| enoff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 30.6.2010 Где: Санкт-Петербург Репутация: нет Всего: 13 |
EasyTask, БД удалять не нужно.
Создайте таблицу, укажите кодировку. Добавьте скриптом данные в эту таблицу. Прочитайте скриптом данные из этой таблицы и выведете. Посмотрите результат. |
|||
|
||||
| EasyTask |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 26.7.2010 Репутация: нет Всего: нет |
Скриптом в базу данные на русском языке - не попадают.
Если их добавить вручную (через РМА) в РМА они выглядят корректно - на сайте в виде "?????" В РМА я все вижу корректно и русккие буквы и добавлю значения на русском, все ок. А вот с сайта они не добавляются и не отображаются. |
|||
|
||||
| enoff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 30.6.2010 Где: Санкт-Петербург Репутация: нет Всего: 13 |
||||
|
||||
| EasyTask |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 26.7.2010 Репутация: нет Всего: нет |
Совсем не попадают.
Incorrect string value: '\xD1\xD0\xD0\xD1\xD0' for column 'name' at row 1 Это сообщение отредактировал(а) EasyTask - 18.9.2010, 14:14 |
|||
|
||||
| enoff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 30.6.2010 Где: Санкт-Петербург Репутация: нет Всего: 13 |
? можно из pma. Кодировка файла какая? |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |