Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > utf8_encode/utf8_decode через пост форму


Автор: webaliser 28.8.2009, 11:13
Как правильно поставить цепочку занесения данных 
  • из формы в базу
  • из базы в шаблон

Используемая схема:
  • Редактор Notepad++
  • Кодировка файлов UTF-8 без BOM
  • Страница charset=UTF-8 с POST-формой
  • Пост через utf8_encode в базу в поле LONGBLOB
  • Запрос в базу, потом utf8_decode и еcho

Что получается:
  • Ввожу "Наши работы"
  • Получаю "На�?и работы"

Спасибо всем за конструктивную идею...

Автор: wil 28.8.2009, 11:18
Как в базе записано? Посмотри через phpmyadmin.
Попробуй в начале скрипта вывода из БД:
Код

setlocale(LC_ALL, 'ru_RU.UTF-8', 'rus');

Автор: webaliser 28.8.2009, 11:35
Не вылечило! Кстати, может еще одна зацепка чем то поможет

В форме полей много, и если заполнять все поля одинаково, в некоторых все ОК, а некоторые глючат! Щас посмотрю в каких форматах эти поля в базе...

Добавлено через 4 минуты
Поля некоторые были в TEXT, Конвертация в LongBlob помогла, всем спасибо!

Автор: IZ@TOP 28.8.2009, 13:00
webaliser, а для чего вам нужно "Пост через utf8_encode в базу в поле LONGBLOB", если у вас все данные и входят и выходят в utf? И для чего вам поля longblob, если не секрет? Вы пишите туда мегабайты текста?

Автор: webaliser 30.8.2009, 09:47
Что-то в этом роде... Там просто проходит экспорт данных из Oracle в мускул, поля одного типа smile и вообще, я к базе никакого отношения не имею. smile Проектировать - работа другого человека, я лишь могу чуток вмешаться в его работу, что-либо посоветовать. У него были грабли - я попробовал помочь.

На счет ввода и вывода в UTF-8 , без данной функции выводило больше "зябликов". Не знаю чего...

Автор: Ипатьев 30.8.2009, 10:48
Цитата(webaliser @  28.8.2009,  11:13 Найти цитируемый пост)
Получаю "На�?и работы"

где получаю?
в какой момент из четырех (а не двух) перечисленых:
Цитата(webaliser @  28.8.2009,  11:13 Найти цитируемый пост)
# из формы скрипт
# из скрипта в базу
# из базы в скрипт
# из скрипта в шаблон


Автор: webaliser 30.8.2009, 12:33
Ребят, вопрос решен.

А вообще, Ипатьев, в перный вводим и в последнем получаем... Как бы догадаться не сложно!  smile

Добавлено через 1 минуту и 3 секунды
IZ@TOP, Дело в том, что туда не только тексты пишутся

Автор: skyboy 30.8.2009, 12:40
Цитата(webaliser @  28.8.2009,  10:13 Найти цитируемый пост)
# Пост через utf8_encode в базу в поле LONGBLOB
# Запрос в базу, потом utf8_decode и еcho

для нормальной работы с UTF-8 должны соблюдаться следующие условия:
  • данные - в utf-8(очевидно)
  • кодировка таблицы(и столбца в частности) указана utf8
  • в PHP скрипте перед первым запросом устанавливается кодировки клиента, запроса и результатов пр помощи выполнения единственного запроса: 
    Код

    SET NAMES utf8
такое не сработает в очень редком количестве случаев, связанных либо с устаревшими версиями ПО(к примеру, mysql 4), либо... даже не представляю, в каком ещё случае.
В любом случае переходить к RAW-полю LONGBLOB - это разве не означает отказаться от работы, как с текстом? ни сортировки, ни поиска...
Цитата(webaliser @  30.8.2009,  11:33 Найти цитируемый пост)
А вообще, Ипатьев, в перный вводим и в последнем получаем... Как бы догадаться не сложно!

ты не понял. только на одном из четырех этапов на входе будет нормальный текст, а на выходе - с искажениями.

Автор: Ипатьев 30.8.2009, 13:11
webaliser
для тех, кто плохо разбирается в программировании, поясняю:
искажения могут быть на любом этапе.
и профессия программиста состоит в том, чтобы определить - на каком именно.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)