Новостная колонка сайта
В разделе портфолио опубликован новый коммерческий мультфильм про мальчика и девочку... короче подробнее...
|
Новые комментарии к проектам
Новые сообщения на форуме
Новые комментарии к статьям
|
|
Проблема с кодировками. (1 чел.) (1) Гость
 | | |
|
Сообщения темы: Проблема с кодировками.
|
|
Проблема с кодировками. 1 г., 6 мес. назад
|
Репутация: 1
|
|
Что-то раньше как-то придерживался при работе с html, php и mysql кодировки windows-1251 и никаких проблем не было, а вот сейчас когда захотел непосредственно свою страничку в и-нете выложить, решил перейти на utf-8 и начался геморрой. Поначалу вообще ничего не понимал, но после какого-то кол-ва часов мучений и лазаний в гугле, выяснил, что Денвер 3 оказывается по умолчанию использует win-1251 и для использования utf-8 нужно подкорректировать одну строчку в конфигурационных файлах апача.. целый день потратил, чтобы выяснить, где эта строчка и как её изменять :)
С апачем проблему решил, а вот в MySQL кодировка по-прежнему остаётся cp1251 и как её изменть ХЗ. Я так понимаю, всё это в конфигах mysql можно найти изменить. Поэтому рождается вопрос №1: в каком файле и что нужно изменять? :) Гугль даёт на этот вопрос кучу одиннаковых ответов с редактированием файла "my.ini" в каталоге msql4, но суть в том, что четвёртая версия уже давным-давно устарела и сейчас везде используется пятая, в которой никаких my.ini нету.
Ну это ещё ладно... с локальным сервером, допустим, разобрались.. но основная проблема возникает на хостинге: у них тоже по умолчанию на mysql установлена кодировка cp1251 и не важно как я создаю базу данных (даже если с явным указанием кодировки utf8 и заполняю её данными со страницы, которые по-любому в формате utf-8), но на выходе всё-равно получаю cp1251. И вообще не понимаю, почему везде кодировка называется windows-1251, а в MySQL написано cp1251.. это одно и тоже? 0_O Уже второй день сижу и мозги пухнут от этих кодировок. Погуглил ещё на эту тему и не раз натыкался на подобные вопросы на форумах про то, что на сервере установлена не utf-8 и ответы в этом случае были всегда одиннаковыми: если сервер эту кодировку установил, то ничего не поделаешь.. значет хостинг этот - дерьмо, найди нормальный! Поэтому.. вопрос №2: правда-ли это? Я просто сейчас юзаю хостиа.ру.. тут вообще есть кто-нибудь оттуда же? А то может быть всё не так печально, как я поначитал :)
|
|
|
|
Раз, два, три, четыре, пять,
Вышел зайчик погулять!
|
|
|
Re: Проблема с кодировками. 1 г., 6 мес. назад
|
Репутация: 1
|
С сервером хостинг-провайдера, впринципе, разобрался, а вот с локальным - нет! 
Блин, весь день сегодня провёл в гугле в поисках информации по изменению кодировок в mysql.. чувствую, что истина уже где-то рядом! Завтра буду продолжать исследования.. хаха.
|
|
|
|
Раз, два, три, четыре, пять,
Вышел зайчик погулять!
|
|
|
Re: Проблема с кодировками. 1 г., 5 мес. назад
|
Репутация: 3
|
|
Я сижу тут же, на хостиа. Спешу обрадовать, проблем с кодировками у них нет и от сервера это вобще никак не зависит. Все зависит от того какая кодировка базы и в какой кодировке данные в нее поступают. Если в базе ты по дефалту поставил utf-8, а данные сайт заносит в 1251, то соответственно будут кракозябры.
Короче вот пример: если ставим движек WordPress - товсе будет отлично. Поттому что и сайт юзает ютф и база создается в ютф. С джумлой слложнее, разные разработчики используют разные кодировки, поэтому иногда могут возникнуть кракозябры, но проблема так же легко решается конвертацией кодировок.
А с Денвером вобще не должно быть проблем, это ведь все у тебя на компе, "че хочу то и делаю".
Напиши конкретно что у тебя не срастается, я подскажу.
|
|
|
|
|
|
|
Re: Проблема с кодировками. 1 г., 5 мес. назад
|
Репутация: 1
|
да я уже тут вроде разобрался...
узнал, что есть такая замечательная комманда, как SHOW VARIABLES; которая выводит значения всех переменных MySQL и после этого стало намного легче всё тестить и понять на каком этапе, где и почему меняется кодировка.
Сначала проблема была в том, что информация конвертировалась в cp1251 при добавлении и при выводе информации из бд. То есть хранилась в бд в utf8 и страница была в utf8, но при выводе конвертировалась в cp1251 и соответственно на странице в utf8-кодировке всё отображалось каракулями. Сначала я эти переменные все вручную по одной менял..
| Код: |
SET character_set_connection=utf8;
SET character_set_resutls=utf8;
SET collation_connection=utf8_general_ci;
#и так далее.. :)
|
но потом вычитал, что функция "SET NAMES utf8;" сама меняет все нужные переменные на нужную кодировку.. Про эту функцию как бы и раньше знал, просто не совсем допонимал что именно она делает. Короче, вроде бы вшарил что к чему.
Но вопросы всё-равно какие-то остаются, когда работаю в коммандной строке. То есть если я добавляю информацию на русском языке через php, то всё нормально добавляется и выводится обратно в html-страницу в utf8, но если я в MySQL пишу запрос
| Код: |
SELECT * FROM table;
|
чтобы посмотреть значения полей таблицы на русском языке, выводятся utf8-каракули, а если пишу так:
| Код: |
SET NAMES cp1251;
SELECT * FROM table;
|
то тоже каракули получаются
Как из коммандной строки MySQL все эти данные можно увидеть на русском языке?
а когда ввожу в таблицу с кодировкой utf8 строчку на русском языке через коммандную строку, то она в таблицу вообще не заносится.. 
|
|
|
|
Последнее редактирование: 13.08.2010 18:13 Редактировал MarkSW.
Раз, два, три, четыре, пять,
Вышел зайчик погулять!
|
|
|
 | | |
|