Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Кодируется e-mail при занесении в БД


Автор: Poveritov 17.7.2015, 13:37
Подскажите, в чем проблема:

есть строка 
$string = "e-mail:[email protected]|status:user:Имя пользователя:Иван", 
вставляю это строку в базу данных 
столбец для данной записи имеет кодировку utf8_general_ci  
В  результате все заносится корректно, кроме адреса электронной почты.

В итоге запись в бд выглядит следующим образом : e-mail:&#103&#107&#118 ... |status:user:Имя пользователя:Иван

Автор: ksnk 17.7.2015, 13:44
Откуда берется строка? Из пользовательского броузера?
Можно перед сохранением сделать строке html_entity_decode , но правильнее  - понять в каком месте кодируется емейл, и понять, надо ли его там кодировать, чтобы не раскодировать чего лишнего...

Автор: Poveritov 17.7.2015, 13:57
e-mail берется со страницы с кодировкой   windows-1251. Но в скрипте я выполняю функцию Incov (из w1251 в utf8) перед работой со строкой.
Мне не понятен тот факт, что все данные в строке берутся из одной и той же страницы, но заносится все корректно, кроме адреса e-mail  

Автор: Poveritov 17.7.2015, 14:18
проверил с помощью функции mb_detect_encoding сам e-mail  [email protected] в кодировке ACII, но почему -то не получается его преобразовать в UTF-8.
Пытался двумя функциями mb_convert_encoding и iconv, но без результата.




Автор: ksnk 17.7.2015, 15:52
Poveritov, Это результат работы функции escape. Для кодировки cp1251 получается довольно неудобоваримая штука.
Можно поискать реализации unescape на php, или написать самому.

Добавлено через 7 минут и 9 секунд
http://ideone.com/aKQas2

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