Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Текст на русском вводится в базу данных не полностью

Сообщения:  [1-10]   [11-20] 

 
 автор: Trianon   (13.02.2011 в 20:39)   письмо автору
 
   для: ruslanaxti   (13.02.2011 в 20:02)
 

Тогда наверное придется отделить от строки первый символ, преобразовать его отдельно, а затем добавить оставшуюся часть.

  Ответить  
 
 автор: ruslanaxti   (13.02.2011 в 20:02)   письмо автору
 
   для: Trianon   (13.02.2011 в 19:44)
 

mb_strtolower помогла, теперь данные корректно вставляются. Вам огромное спасибо.
Но не хочу показаться чайником, теперь функция ucfirst не действует, а среди mb_.. аналогов найти не могу

  Ответить  
 
 автор: Trianon   (13.02.2011 в 19:44)   письмо автору
 
   для: ruslanaxti   (13.02.2011 в 19:39)
 

да. Но где эта строка и где добавление в таблицу...


Так или иначе большинство обычных строковых функций корректно работать со строками в кодировке utf-8 не будут, поскольку она многобайтовая.
mb_..-аналоги для этих функций разработаны как раз для этих целей.

  Ответить  
 
 автор: ruslanaxti   (13.02.2011 в 19:39)   письмо автору
 
   для: Trianon   (13.02.2011 в 19:01)
 

есть же, после проверки на регулярные выражения сразу под ним

  Ответить  
 
 автор: Trianon   (13.02.2011 в 19:01)   письмо автору
 
   для: ruslanaxti   (13.02.2011 в 17:55)
 

>...В коде есть строка $name=ucfirst(strtolower(trim($_POST['name']))), ...

В приведеном коде не было этой строки.



Касательно преобразовагий строковых в utf-8 - имеет смысл поглядеть
php.net/mbstring

  Ответить  
 
 автор: ruslanaxti   (13.02.2011 в 17:55)   письмо автору
 
   для: Trianon   (12.02.2011 в 00:46)
 

Разобрался с ситуацией. Оказалось из за функции strtolower. В коде есть строка $name=ucfirst(strtolower(trim($_POST['name']))), которая удаляет пробелы из формы, переводит данные в нижний регистр и переводит первую букву слова в верхний регистр. Вот функция strtolower преобразует русские буквы в квадратики и в базу они не заносятся, а применяя функцию ucfirst первая буква принимает нормальный вид.

Вот такие чудеса творятся!

Но теперь другой вопрос. Как иначе перевести весь текст в нижний регистр?

  Ответить  
 
 автор: Trianon   (12.02.2011 в 00:46)   письмо автору
 
   для: ruslanaxti   (12.02.2011 в 00:23)
 

>Просто я пробовал с ним (все время) и без него, все одинаково, данные не вставляются.
>Искал в инете, везде пишут что

Вы явно прочли что-то не то.

>если база данных создана в utf8

Кодировка БД имеет слабое прямое влияние на ситуацию.
Куда важнее, в какой кодировке созданы таблицы, и даже их поля.
Хотя при прочих равных таблицы и наследуют кодировку БД.

>и в конфиг фаиле установлено utf8
В конфигурационном файле куча различных опций.
Сказать в конфиге установлено utf8 - все равно что ничего не сказать.

>все должно работать и SET NAME не нужен будит.

А вот такое бывает, но крайне редко.
И насколько мне известно - никогда не бывает, если коннект выполняется через учетную запись root - как у Вас.

  Ответить  
 
 автор: ruslanaxti   (12.02.2011 в 00:23)   письмо автору
 
   для: Trianon   (12.02.2011 в 00:15)
 

Просто я пробовал с ним (все время) и без него, все одинаково, данные не вставляются. Искал в инете, везде пишут что если база данных создана в utf8 и в конфиг фаиле установлено utf8 все должно работать и SET NAME не нужен будит. Но его поставлю опять пусть там будит.

  Ответить  
 
 автор: Trianon   (12.02.2011 в 00:15)   письмо автору
 
   для: ruslanaxti   (12.02.2011 в 00:03)
 

в каком смысле - непригодность?
без этого запроса у Вас на 98% ничего хорошего не выйдет.

  Ответить  
 
 автор: ruslanaxti   (12.02.2011 в 00:06)   письмо автору
 
   для: 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');
}

  Ответить  

Сообщения:  [1-10]   [11-20] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования