CREATE table1(
myid int(11) NOT NULL auto_increment,
myfield text collate utf8_unicode_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Опять проблема кирилицы
В запросах SELECT правильно выводит а вот INSERT не может правильно вводит данные и в результате все показывается как ????? ???? ??????? вот так вот.
Перед INSERT'ом делал вот такие запросы
mysql_query("SET CHARSET utf8");
setlocale(LC_ALL,'ru_RU.UTF8');
mysql_query("SET NAMES=UTF8");
mysql_query ("SET COLLATION_CONNECTION=UTF8");
mysql_query("SET CHARACTER_SET_CLIENT=UTF8");
mysql_query("SET CHARACTER_SET_RESULTS=UTF8");
Все таблицы у меня в формате utf-8.
Версия MySQL 5.0.45-community
Версия php 5.2
Между тем все это происходит на бесплатном хостере куда я закинул свой тестовый сайт. Забавно то что через PHPMyAdmin свои запросы делаю все принимает и показывает как надо. Проблема существует только когда из php кода отправляю INSERT запросы.У меня на локальном все работает нормально и INSERT и SELECT все правильно отображает кирилицу. Может кто знает более мягкий бесплатный хостер с поддержкой кирилицы для тестовых целей?:(
ссыль убери а то за спам ругнут.
А данные отправляешь для занесения в utf8 формате?
З.Ы. Скорее всего при отпавке через PHP-скрипт нужно ему тоже ставить кодировкув UTF-8, т.к. по дефолу идёт в той кодировке, что стоит у твоего бразера.. А МайАдмин в коде уже несёт конвертацю в УТФ...
мож глупость написал, но вроде так..
UAS, +1
Цитата: Тень Пса
это автор неверно написал
Что именно я неверно написал ?
Цитата: Тень Пса
он любит глупые вопросы позадавать, повторять что уже спрашивали и тд... отдельный респект ему за это :)
В заданном мной вопросе ничего глупого и сверхестественного не вижу.
Мне просто надо чтобы MySQL возвращал данные в понятном для броузера формате.
Таблицы в базе, страницы все в формате utf-8. Может что то надо по другому делать?!:(
Цитата: UAS
А данные отправляешь для занесения в utf8 формате?
Да .
Ну а если при выводе в браузер, значит ищи несоответсвия вывода кодировки БД и страницы..
Да я через phpmyadmin отправляю insert запросы без проблем принимает. А вот из php скрипта не получается.:confused:
SET NAMES utf8?
Короче если писать SET CHARSET utf8 select'ом правильно выводит но INSERT делает не правильно (мозайки добавляет)
Если ничего не писать INSERT делает правильно но SELECT выводит мозайки.
Тут палка с двух концов получается. Очень странно...:confused:
Тут ошибка явно во мне потому что С PHPMyAdmin и занесение и чтение с базы производится правильно.
Что можно сделать в подобных случаях ??? (Повеситься, застрелиться,...)
Объясняю тем, кто не умеет пользоваться юникодом по пунктам. Чтобы юникод работал нужно:
1) Таблицы создавать в соответствующей кодировке, а именно - при создании задавать параметры кодировки вот так:
Код:
2) Всегда после коннекта к серверу СУБД и выбора нужной БД выполнять запрос:
Код:
mysql_query('SET NAMES utf8');
3) Страница, с которой пользователь работает с данными из БД (смотрит их, редактирует, создает и т.д.) ДОЛЖНА быть в кодировке UTF-8. Для этого нужно выставить соответствующий мета тег и перевести все тексты в юникод (делается в любом редакторе, умеющем работать с юникодом простым переключением из режима ANSI в режим Unicode/UTF-8)
Ежели ваш сайт (скрипт, cms, фреймворк или иная убогая поделка) показывают крякозябры или знаки вопроса - значит в 96% случаев вами не выполнено одно (или более) действий, указанных выше. Оставшиеся 4% - это различные гораздо более редкие проблемы вроде принудительной перекодировки сервером Апач или отсутствии поддержки юникода в сборке той версии субд, что вы используете. Однако не нужно себе льстить и надеяться на эти пресловутые 4%. Для подавляющей части вопрошающих на этом форуме актуальны те самые 96%.
ЗЫ Вероятно что-то забыл. Увидите ошибку - обязательно на нее укажите :):)
Цитата: RussianSpy
1) Таблицы создавать в соответствующей кодировке, а именно - при создании задавать параметры кодировки вот так:
Код:
CREATE table1(
myid int(11) NOT NULL auto_increment,
myfield text collate utf8_unicode_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
myid int(11) NOT NULL auto_increment,
myfield text collate utf8_unicode_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
2) Всегда после коннекта к серверу СУБД и выбора нужной БД выполнять запрос:
Код:
mysql_query('SET NAMES utf8');
3) Страница, с которой пользователь работает с данными из БД (смотрит их, редактирует, создает и т.д.) ДОЛЖНА быть в кодировке UTF-8. Для этого нужно выставить соответствующий мета тег и перевести все тексты в юникод (делается в любом редакторе, умеющем работать с юникодом простым переключением из режима ANSI в режим Unicode/UTF-8)
Спасибо конечено. Но все эти 3 пункта я давно уже знаю и выполняю на каждом своем сайте которых я делаю.
Раньше форматом utf8 не пользовался (только cp1251) по этому опыта нету работы с форматом utf8.
:(
В таком случае ссылку на проблемный скрипт
Цитата: RussianSpy
Ежели ваш сайт (скрипт, cms, фреймворк или иная убогая поделка)
аххаххаааах:D:D:D[/SIZE]