ArtWeb-Design

Создание, редизайн и продвижение сайтов,
профессиональное качество, низкие цены

UTF-8

19.03.2008 | 00:44 | автор: id

Пользователь id

Темный админ

Зарегистрирован: 01.01.1970
Комментариев: 4
Личное собщение

Вроде простое задание: заполнить несколько полей таблицы текстом (конечно, в начале пересмотреть пару тысяч строк PHP-кода и потом только найти причину "неисправности", но это не в счет :-). Спустя 1-2 минуты работа сделана, сайт нормально работает и нужно проделать ту же операцию на другом сайте с точно такой же CMS. Знакомая картина, даже не нужно смотреть PHP в этот раз.

Но тут заказчик говорит: "Стоп, а почему я вместо нормальных буковок вижу ????????? ? ??????"

Надо решать вопрос. Откуда же растут ноги?

1) Сверяю все скрипты, буквально по строчкам (хорошо, что пока искал проблему в первый раз, успел запомнить, что отвечает за этот текст). Одинаковые они!

2) А может вопрос в кодировке? Дописываю в нужном месте:

mysql_query ("set character_set_client=cp1251");

mysql_query ("set character_set_results=cp1251");

mysql_query ("set collation_connection=cp1251_general_ci");

Как ни странно все работает. Почему странно? Да потому что в базе данных и во всех ее таблицах стоит кодировка UTF-8! В начале я пытался решить проблему, подставляя попеременно в скрипты

mysql_query ("set character_set_client=cp1251");

mysql_query ("set character_set_results=cp1251");

mysql_query ("set collation_connection=cp1251_general_ci");

mysql_query ("set character_set_client=utf-8");

mysql_query ("set character_set_results=utf-8");

mysql_query ("set collation_connection=utf8_general_ci");

* Ну по принципу Работает? Не трогай!

Не буду долго расписывать. Да, это помогло, но появились другие проблемы. Пришлось отказаться от данного метода.

3) Наверное час я провозился с настройками phpMyAdmin и импортом/экспортом баз. Все впустую. Разве что заметил, что ТОЛЬКО в этой таблице русские буквы отображаются верно. В других Юникодовых таблицах были крякозяблы.

В качестве последнего варианта, решил добавить данные в обход phpMyAdmin. Быстро написал что-то типа этого:

<?php

$q="INSERT INTO `table` (`a`,`b`) VALUES (1,2)";

mysql_query($q);

?>

Вставил код в первый попавшийся скрипт. (Тут немного вру, поискал скрипт с mysql_connect();)

И вот чудо! Вот они нормальные русские буквы! Этот уеб@нский phpMyAdmin каким-то образом вставлял их как cp1251, несмотря на все указания и выставленные кодировки. Осталось только удалить старые записи. Можно отдыхать...

Перепечатка разрешена только при начичии ссылки на источник: http://artweb-design.org/blog/full/17/

Ключевые слова: phpMyAdmin, PHP, MySQL

Просмотров: 651, рейтинг: -----

Комментарии:

Эту новость еще никто не закомментировал