[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблемы с UTF-8
Ronder
Есть форма, которая передаёт данные, введённые от пользователя PHP-скрипту, который заносит эти данные в MySQL.
Кодировка MySQL-базы UTF-8, на всех страницах тоже UTF-8.

HTML
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<form action="result.php" method="post">
Текст: <input size="40" name="text" /><input type="submit" value="go" />
</form>


PHP
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<?
mysql_connect('localhost''root''');
mysql_select_db('search');

mysql_query("INSERT INTO `peoples` VALUES (NULL, '".$_POST['text']."');");

mysql_close();



В итоге, в MySQL попадают данные вида "зддрассс".
Подскажите пожалуйста как исправить? Заранее благодарен!



Спустя 12 минут, 34 секунды (24.05.2009 - 10:02) Ronder написал(а):
Проблему решил... В PHP скрипт нужно было добавить строки:

PHP
mysql_query('SET character_set_database = utf8');
mysql_query('SET NAMES utf8');


Только вопрос, зачем? Если по умолчанию у MySQL сервера стоит UTF-8?

Спустя 29 дней, 8 часов, 18 минут, 39 секунд (23.06.2009 - 18:21) live Uucyc написал(а):
у меня все наоборот.
перешел с windows-1251 на utf8. БД также перевел на ютф, но данные по прежнему отображаются вопросиками (???????????). В чем может быть причина?

Спустя 37 минут, 57 секунд (23.06.2009 - 18:59) live Uucyc написал(а):
упс, извиняйте, полистал немного и нашел ответ wink.gif

Спустя 16 часов, 48 минут, 32 секунды (24.06.2009 - 11:47) live Uucyc написал(а):
возникла новая проблема.
Совместима ли функция strtolower() и ютф8? при использовании этой функции в ютф выводит вопросики, без нее все отлично.
также не работает ucfirst().

Спустя 33 минуты, 5 секунд (24.06.2009 - 12:20) vasa_c написал(а):

Спустя 16 минут, 5 секунд (24.06.2009 - 12:36) live Uucyc написал(а):
спасибо

Спустя 2 дня, 3 часа, 55 минут, 53 секунды (26.06.2009 - 16:32) live Uucyc написал(а):
указал в начале скрипта
PHP
setlocale(LC_ALL"ru_RU.UTF-8");

но по прежнему не работают strtolower() и т.п.

Спустя 1 час, 3 минуты, 20 секунд (26.06.2009 - 17:36) twin написал(а):
Локаль это не панацея и достаточно капризная штука. Проще указать кодировку явно
PHP
$text = mb_strtolower($text, "utf-8");

Можно раз и на всегда, для всех, в начале скрипта написать
PHP
mb_internal_encoding'utf-8' );

Спустя 5 минут, 25 секунд (26.06.2009 - 17:41) live Uucyc написал(а):
twin, ты спас меня, спасибо cool.gif

Спустя 1 час, 25 минут, 16 секунд (26.06.2009 - 19:06) live Uucyc написал(а):
рано радовался.
PHP
mb_internal_encoding'utf-8' );
почему-то не спасает.
а
PHP
mb_ucfirst($text"utf-8")

я не нашел

Спустя 41 минута, 23 секунды (26.06.2009 - 19:48) live Uucyc написал(а):
опишу подробнее свою проблему.
есть форма регитсрации, а это код обработки
PHP
if (!empty($_POST['city']))
        {
            
$city ucfirst(mysql_real_escape_string(trim($_POST['city'])));
            if (!
preg_match("/^[a-zA-Zа-яА-Я\.-\s]+$/",$city)) $city_echo "Недопустимые символы";
        }
        else 
$city_echo "Введите название города!";

сначала был на 1251, перешел на utf8 и стали проблемы. Уже данный код работает не корректно

Спустя 18 минут, 20 секунд (26.06.2009 - 20:06) twin написал(а):
Ну тут с регуляркой малость напутано:
PHP
if (!preg_match("/^[a-zа-яё\.-\s]+$/ui",$city))

А город как я понял должен быть с большой буквы обязательно... Нет в mb функции mb_ucfirst(). Можно так извернуться:
PHP
$city iconv("utf-8","windows-1251",$city);
$city ucfirst($city);
$city iconv("windows-1251","utf-8",$city);

Спустя 5 минут, 58 секунд (26.06.2009 - 20:12) live Uucyc написал(а):
twin, сейчас попробуем. Надеюсь, что получится

Спустя 7 минут, 58 секунд (26.06.2009 - 20:20) live Uucyc написал(а):
biggrin.gif я доволен, благодарю!


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.