![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
Fenderovna |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 29.5.2013 Репутация: нет Всего: нет |
Есть сайт на perl. Все в cp 1251. Получаем данные из формы (аякс) и должны скриптом записать их в базу данных. Прежде использовалась бд в ср1251. В коде присутствуют функции перекодирования вида:
Теперь мигрируем на новую в utf-8. Никак не получается адекватно писать кириллицу. Нид хэлп. |
|||
|
||||
Jimy |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 4.7.2010 Репутация: нет Всего: 3 |
может при соединении к базе выполнить:
смысл приведенного perl-кода не ясен, тем более если вы говорите "Все в cp 1251". |
|||
|
||||
Fenderovna |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 29.5.2013 Репутация: нет Всего: нет |
set names к результату не приводит
все в ср1251 кроме аякса, который всегда работает в утф8, соответственно отдает параметры также в нем |
|||
|
||||
Pfailed |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 2 Всего: 39 |
|
|||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 4 Всего: 49 |
Fenderovna, я не понял, в чем именно проблема? Какие данные в БД пишутся неадекватно?
Еще укажите, что выдает
Это сообщение отредактировал(а) ginnie - 29.5.2013, 11:20 -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
Fenderovna |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 29.5.2013 Репутация: нет Всего: нет |
безрезультатно любые кириллические 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 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 557 Регистрация: 22.12.2005 Где: Россия->Урал-& gt;Миасс Репутация: нет Всего: 17 |
Перекодировка в примере - это перед записью в базу или после чтения из базы? Непонятно, что значит всё в cp1251. В базе данные в какой кодировке хранятся? какая ось на сервере? Какая кодировка страницы в браузере? Видимо linux - какая там установлена кодировка? Похоже вы просто запутались в кодировках ... Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
Fenderovna |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 29.5.2013 Репутация: нет Всего: нет |
Перед записью
В utf-8 Debian 4 win-1251 |
|||
|
||||
igorold |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 557 Регистрация: 22.12.2005 Где: Россия->Урал-& gt;Миасс Репутация: нет Всего: 17 |
т.е. данные в базе хранятся в кодировке utf-8, а вы перед записью в базу кодируете данные в кодировку Windows-1251, а зачем?
Если данные в базе хранятся в utf-8, то и пишите туда данные в этой кодировке. А после чтения из базы, делайте перекодирование перед отправкой браузеру в нужной кодировке. Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
igorold |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 557 Регистрация: 22.12.2005 Где: Россия->Урал-& gt;Миасс Репутация: нет Всего: 17 |
Может вам так надо писать:
?? Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
ginnie |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 4 Всего: 49 |
Fenderovna, покажите еще
для таблицы, в которую Вы записываете данные. Надо посмотреть какие там указаны кодировки. igorold Вам правильно указал, что перекодировать в cp1251 перед записью в БД не нужно, т.к. у Вас
Укажите еще, как Вы определяете, что данные в базу записались неправильно? P.S. Я надеюсь, Вы понимаете значения переменных
если нет, обязательно почитайте про них в документации по MySQL. Это сообщение отредактировал(а) ginnie - 30.5.2013, 11:39 -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
||||||
|
|||||||
warlock000 |
|
||||||||||
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 2.8.2011 Репутация: нет Всего: нет |
Простые правила, без конвертации, итд итп.
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. Всё вышеперечисленное спасает от различных граблей с регулярками и исключает проблеммы с кодировками. Это сообщение отредактировал(а) warlock000 - 10.6.2013, 07:52 |
||||||||||
|
|||||||||||
![]() ![]() ![]() |
Правила форума "Perl: CGI программирование" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: разработка для Web | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |