Форумы портала PHP.SU » » Кодировки и все смежное » Проблема кодировки при роботе с denwer,php,mysql

Страниц (1): [1]
 

1. exspool - 27 Апреля, 2012 - 15:03:56 - перейти к сообщению
Здравствуйте.

Суть:

1. есть Denwer
2. есть таблица mysql (кодировка UTF-8) в которой содержится данные на русском, польском, чешском языках
3. есть файл get_data.php который получает эти данные с таблицы
4. есть файл index.php который отображает эти данные (строчка <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> присутсвует)
5. с проектом работаю с помощью NetBeans (проект выставлен в кодировку UTF-8)
6. все файлы в кодировке UTF-8

Результат (в браузере в пункте кодировка стоит - UTF-8):

Руская поэзия
Kniha ?ivota
Ksi?ga ?ycia
Sprawdza? testu IQ

Проблемы которые я решал и которые не помогли:

1. header('Content-Type: text/html; charset=utf-8');
2. httpd.conf сменил на AddDefaultCharset UTF-8

Надеюсь на помощь. Спасибо!
2. Bio man - 27 Апреля, 2012 - 15:16:31 - перейти к сообщению
или после подключения к БД
3. exspool - 27 Апреля, 2012 - 15:28:11 - перейти к сообщению
Bio man пишет:или после подключения к БД


результат поменялся, но проблема осталась:

Kniha Еѕivota
KsiД™ga Ејycia
Sprawdzać testu IQ
4. Viper - 27 Апреля, 2012 - 15:39:23 - перейти к сообщению
денвер выкинте. криворукая сборка для неизвестно кого. возьмите либо нормальную сборку(коих довольно много) либо поставьте все сами и навсегда забудьте про такие проблемы.

PS! ИМХО
PS1! Интересно как долго люди будут наступать на те же самые грабли, при том, что чуть ли не каждый второй пост на любом форуме про проблемы с (дебил)денвером.
5. exspool - 27 Апреля, 2012 - 15:55:43 - перейти к сообщению
Viper пишет:
денвер выкинте. криворукая сборка для неизвестно кого. возьмите либо нормальную сборку(коих довольно много)


какую посоветуете?

P.S. все как то пользуются Денвером, и я знаю что это уже очень бородатая тема, но очень интересно как ее просто решить, без всяких там функций, скриптов и т.д. и от даже как посоветовал "Bio Man" выше использовать mysql_set_charset() , я понимаю что она устанавливает кодировку, но зачем? когда и так все по умолчанию в ЮТФ-8.

P.S.S. все в ютф-8 а отображаются кряки, парадокс)
(Добавление)
еще одна проблемка которую заметил:

когда ставлю header('Content-Type: text/html; charset=utf-8'); то русские символы меняются вообще на такое вот чудо �
6. Bio man - 27 Апреля, 2012 - 16:19:00 - перейти к сообщению
exspool пишет:
я понимаю что она устанавливает кодировку, но зачем?
Она говорит базе в какой кодировке придут данные и в какой кодировке их отдавать. Collation это не кодировка самих данных.
7. exspool - 27 Апреля, 2012 - 17:00:34 - перейти к сообщению
Bio man пишет:
exspool пишет:
я понимаю что она устанавливает кодировку, но зачем?
Она говорит базе в какой кодировке придут данные и в какой кодировке их отдавать. Collation это не кодировка самих данных.


не помогла(((
8. Bio man - 27 Апреля, 2012 - 17:36:12 - перейти к сообщению
Должно быть так:
0. В HTML файле <meta charset="utf-8" />
1. В БД Collation utf8_general_ci
2. ВСЕ файлы в кодировке UTF-8 без BOM (что бы заголовки корректно передовались)
3. Если используется устаревший mysql драйвер то сразу после подключения к БД прописать mysql_set_charset("utf8") иначе отправить вышеупомянутый запрос SET NAMES "utf8"
9. Crate - 27 Апреля, 2012 - 17:41:38 - перейти к сообщению
Bio man
Вопрос в тему: что быстрее и лучше, mysql_set_charset("utf8") или SET NAMES "utf8"?
10. Bio man - 27 Апреля, 2012 - 17:44:19 - перейти к сообщению
Для mysql драйвера советуется использовать mysql_set_charset() нежели SET NAMES
для других дров я не знаю есть ли там подобные ф-ции
11. exspool - 28 Апреля, 2012 - 12:59:53 - перейти к сообщению
Bio man пишет:
Должно быть так:
0. В HTML файле <meta charset="utf-8" />
1. В БД Collation utf8_general_ci
2. ВСЕ файлы в кодировке UTF-8 без BOM (что бы заголовки корректно передовались)
3. Если используется устаревший mysql драйвер то сразу после подключения к БД прописать mysql_set_charset("utf8") иначе отправить вышеупомянутый запрос SET NAMES "utf8"


0. есть
1. есть
2. есть
3. есть

результат: крякозябры(((

я вот думаю может это действительно сам денвер некорректно работает с кодировками, или еще что-то в этом духе(
(Добавление)
Все. Разобрался ))) вся проблема была в самом файле php.ini. Почему то строчка default_charset = "UTF-8" была закомментированая. Расскоментировал и добавил mysql_set_charset('utf8');. Все корректно:

Classic Poems
Kniha života
Księga życia
Sprawdzać testu IQ
12. Мелкий - 28 Апреля, 2012 - 17:38:22 - перейти к сообщению
Bio man пишет:
3. Если используется устаревший mysql драйвер то сразу после подключения к БД прописать mysql_set_charset("utf8") иначе отправить вышеупомянутый запрос SET NAMES "utf8"

Наоборот, только.
Если используется древний сервер mysql - младше 5.0.7 - то set names, иначе - родные функции mysql_set_charset, mysqli_character_set_name, для PDO только опять же setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'");

 

Powered by ExBB FM 1.0 RC1