|
|
|
|
|
для: ruslanaxti
(13.02.2011 в 20:02)
| | Тогда наверное придется отделить от строки первый символ, преобразовать его отдельно, а затем добавить оставшуюся часть. | |
|
|
|
|
|
|
|
для: Trianon
(13.02.2011 в 19:44)
| | mb_strtolower помогла, теперь данные корректно вставляются. Вам огромное спасибо.
Но не хочу показаться чайником, теперь функция ucfirst не действует, а среди mb_.. аналогов найти не могу | |
|
|
|
|
|
|
|
для: ruslanaxti
(13.02.2011 в 19:39)
| | да. Но где эта строка и где добавление в таблицу...
Так или иначе большинство обычных строковых функций корректно работать со строками в кодировке utf-8 не будут, поскольку она многобайтовая.
mb_..-аналоги для этих функций разработаны как раз для этих целей. | |
|
|
|
|
|
|
|
для: Trianon
(13.02.2011 в 19:01)
| | есть же, после проверки на регулярные выражения сразу под ним | |
|
|
|
|
|
|
|
для: ruslanaxti
(13.02.2011 в 17:55)
| | >...В коде есть строка $name=ucfirst(strtolower(trim($_POST['name']))), ...
В приведеном коде не было этой строки.
Касательно преобразовагий строковых в utf-8 - имеет смысл поглядеть
php.net/mbstring | |
|
|
|
|
|
|
|
для: Trianon
(12.02.2011 в 00:46)
| | Разобрался с ситуацией. Оказалось из за функции strtolower. В коде есть строка $name=ucfirst(strtolower(trim($_POST['name']))), которая удаляет пробелы из формы, переводит данные в нижний регистр и переводит первую букву слова в верхний регистр. Вот функция strtolower преобразует русские буквы в квадратики и в базу они не заносятся, а применяя функцию ucfirst первая буква принимает нормальный вид.
Вот такие чудеса творятся!
Но теперь другой вопрос. Как иначе перевести весь текст в нижний регистр? | |
|
|
|
|
|
|
|
для: ruslanaxti
(12.02.2011 в 00:23)
| | >Просто я пробовал с ним (все время) и без него, все одинаково, данные не вставляются.
>Искал в инете, везде пишут что
Вы явно прочли что-то не то.
>если база данных создана в utf8
Кодировка БД имеет слабое прямое влияние на ситуацию.
Куда важнее, в какой кодировке созданы таблицы, и даже их поля.
Хотя при прочих равных таблицы и наследуют кодировку БД.
>и в конфиг фаиле установлено utf8
В конфигурационном файле куча различных опций.
Сказать в конфиге установлено utf8 - все равно что ничего не сказать.
>все должно работать и SET NAME не нужен будит.
А вот такое бывает, но крайне редко.
И насколько мне известно - никогда не бывает, если коннект выполняется через учетную запись root - как у Вас. | |
|
|
|
|
|
|
|
для: Trianon
(12.02.2011 в 00:15)
| | Просто я пробовал с ним (все время) и без него, все одинаково, данные не вставляются. Искал в инете, везде пишут что если база данных создана в utf8 и в конфиг фаиле установлено utf8 все должно работать и SET NAME не нужен будит. Но его поставлю опять пусть там будит. | |
|
|
|
|
|
|
|
для: ruslanaxti
(12.02.2011 в 00:03)
| | в каком смысле - непригодность?
без этого запроса у Вас на 98% ничего хорошего не выйдет. | |
|
|
|
|
|
|
|
для: ruslanaxti
(12.02.2011 в 00:03)
| | он был вот так, после
$connect=mysql_connect('localhost','root','2132');
if (!$connect) {
echo "Unable to connect to DB: " . mysql_error();
exit;
}
здесь еще было
else {
mysql_query('SET character_set_database = utf8');
mysql_query('SET NAMES utf8');
} | |
|
|
|
|