| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: разработка для Web > Кодировки perl, mysql |
| Автор: Fenderovna 29.5.2013, 04:56 | ||
Есть сайт на perl. Все в cp 1251. Получаем данные из формы (аякс) и должны скриптом записать их в базу данных. Прежде использовалась бд в ср1251. В коде присутствуют функции перекодирования вида:
Теперь мигрируем на новую в utf-8. Никак не получается адекватно писать кириллицу. Нид хэлп. |
| Автор: Jimy 29.5.2013, 08:12 | ||
может при соединении к базе выполнить:
смысл приведенного perl-кода не ясен, тем более если вы говорите "Все в cp 1251". |
| Автор: Fenderovna 29.5.2013, 08:17 |
| set names к результату не приводит все в ср1251 кроме аякса, который всегда работает в утф8, соответственно отдает параметры также в нем |
| Автор: Pfailed 29.5.2013, 10:27 | ||
|
| Автор: ginnie 29.5.2013, 11:17 | ||
| Fenderovna, я не понял, в чем именно проблема? Какие данные в БД пишутся неадекватно? Еще укажите, что выдает
|
| Автор: Fenderovna 30.5.2013, 03:48 |
безрезультатно любые кириллические character_set_client utf8 character_set_connection utf8 character_set_database latin1 character_set_filesystem binary character_set_results utf8 character_set_server latin1 character_set_system latin1 |
| Автор: igorold 30.5.2013, 07:53 | ||
Перекодировка в примере - это перед записью в базу или после чтения из базы? Непонятно, что значит всё в cp1251. В базе данные в какой кодировке хранятся? какая ось на сервере? Какая кодировка страницы в браузере? Видимо linux - какая там установлена кодировка? Похоже вы просто запутались в кодировках ... Этот ответ добавлен с нового Винграда - http://ru.vingrad.com//object-id51a560736ccc19a44a000002#findElement_E7045_51a6db646ccc19b133000357_0 |
| Автор: Fenderovna 30.5.2013, 08:06 |
| Перед записью В utf-8 Debian 4 win-1251 |
| Автор: igorold 30.5.2013, 08:25 |
| т.е. данные в базе хранятся в кодировке utf-8, а вы перед записью в базу кодируете данные в кодировку Windows-1251, а зачем? Если данные в базе хранятся в utf-8, то и пишите туда данные в этой кодировке. А после чтения из базы, делайте перекодирование перед отправкой браузеру в нужной кодировке. Этот ответ добавлен с нового Винграда - http://ru.vingrad.com//object-id51a560736ccc19a44a000002#findElement_E7045_51a6e2bd6ccc19c826002bd2_0 |
| Автор: igorold 30.5.2013, 08:27 | ||
Может вам так надо писать:
?? Этот ответ добавлен с нового Винграда - http://ru.vingrad.com//object-id51a560736ccc19a44a000002#findElement_E7045_51a6e3356ccc19d340000213_0 |
| Автор: ginnie 30.5.2013, 11:33 | ||||||
Fenderovna, покажите еще
для таблицы, в которую Вы записываете данные. Надо посмотреть какие там указаны кодировки. igorold Вам правильно указал, что перекодировать в cp1251 перед записью в БД не нужно, т.к. у Вас
Укажите еще, как Вы определяете, что данные в базу записались неправильно? P.S. Я надеюсь, Вы понимаете значения переменных
если нет, обязательно почитайте про них в документации по MySQL. |
| Автор: warlock000 10.6.2013, 07:51 | ||||||||||
| Простые правила, без конвертации, итд итп. 1) Если контент в utf-8 то: 1.1)
1.2) Кодировка документа (скрипта) - UTF-8 (иногда без БОМ), юзай нотепад ++ 2) Если контент CP1251 2.1)
2.2) Кодировка документа (скрипта) - ANSI 3) Если совсем всё плохо, CP1251 + utf-8 3.1)
3.2)
3.3) Кодировка документа (скрипта) - UTF-8 3.4) Конвертируем
3.5) Не забываем про грабли с регулярками, если используется Encode, конвертируем всё в utf8 если даже контент в utf8. Всё вышеперечисленное спасает от различных граблей с регулярками и исключает проблеммы с кодировками. |