Передать данные из формы win1251 в скрипт на utf-8

Статус
В этой теме нельзя размещать новые ответы.

andrewa

Участник
Регистрация
11 Янв 2008
Сообщения
167
Реакции
7
имеется сайт в кодировке windows-1251 и скрипт рассылки на utf-8 (соответственно и базы данных разные), когда я устанавливаю форму подписки на рассылку на сайт, то после заполнения полей "email" и "Имя", email записывается в базу скрипта рассылки, а имя нет из-за кодировки (проверял, когда форма заполняется на странице с кодировкой utf-8, то все четко передается и сохраняется в скрипт рассылки).

как можно из формы на странице с кодировкой windows-1251 передать русский текст в скрипт (базу данных) на utf-8? в форме 2 поля "email" и "Имя"...
 
Я бы использовал функцию mb_convert_encoding (string str, string to-encoding [, mixed from-encoding]), а именно
PHP:
$data = ''; //переменная, которая заноситься в базу данных
$data = mb_convert_encoding($_POST['переменная формы'], "UTF-8");

//затем выполняешь запрос к базе данных, как пример
mysql_query("insert into table values($data)");

более подробно о функции можешь почитать здесь
Для просмотра ссылки Войди или Зарегистрируйся
 
Я бы использовал функцию mb_convert_encoding (string str, string to-encoding [, mixed from-encoding]), а именно
PHP:
$data = ''; //переменная, которая заноситься в базу данных
$data = mb_convert_encoding($_POST['переменная формы'], "UTF-8");

//затем выполняешь запрос к базе данных, как пример
mysql_query("insert into table values($data)");
более подробно о функции можешь почитать здесь
Для просмотра ссылки Войди или Зарегистрируйся
Не у всех на хостинге стоит библиотека для работы с мультибайтовыми строками. Как вариант рекомендую использовать ф-ю iconv
 
iconv уже не торт?:(
 
Пользуйте поиск. Я уже публиковал в этой ветке форума функции для перевода текста utf <-> win1251, которые работают на любом хостинге.
 
Я уже публиковал в этой ветке форума функции для перевода текста utf <-> win1251, которые работают на любом хостинге.

да, просмотрев ваши записи нашел только function utf2win, а win1251 to utf8 нету ...

куда нужно функцию iconv() запихивать? в страницу добавления нового пользователя скрипта рассылки? данные поля "Имя" содержатся в переменной $data я вставляю в страницу добавки нового подписчика код
PHP:
$data iconv("windows-1251", "utf-8", "$data");

и все равно в базе данных скрипта рассылки пустое поле, так как форма заполнялась на странице в windows-1251 :(
 
В скрипт который принимает входные данные
 
Вызывайте перед добавлением в базу.
Я, например, вызываю прямо в параметрах метода добавления записи:
PHP:
$db->add( win2utf( $str ) );
 
ни фига не получилось, возможно я не туда вставляю... не знаю...

пришлось вывести форму подписки на отдельную страницу сайта без дизайна в кодировке utf-8 и в начале страницы прописать:

PHP:
<?php header('Content-type: text/html; charset=utf-8')?>

Таким образом в базу попадают данные в нужной кодировке (utf-8) и поля заполненные отображаются...

не совсем то, что хотелось, но по крайней мере работает!
 
если из страницы в одной кодировке сохранять в mysql базу в другой кодировке, то надо указать кодировку соединения перед сохранением в базу, в этом случае кодировка соединения cp1251:

PHP:
//переключение на базу скрипта рассылки
mysql_select_db("drugaja_utf8_baza");
mysql_query("SET NAMES 'cp1251'");
mysql_query("INSERT INTO ...");
//дальше переключение на базу сайта
mysql_select_db("baza_cp1251");
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху