Сбивается кодировка парочки букв кирилицы при записи в БД

Главные вкладки

Аватар пользователя kissfm kissfm 11 марта 2010 в 20:15

Здравствуйте.
Вот по заказу вручную написал инструментарий на голом php и всунул его в Drupal.
Короче, там есть несколько полей для ввода пользователям своего ФИО, Адреса, Доп. инфо...
И при извлечении этих данных для просмотра буквы кириллицы И, Ш некорректно выглядят, хотя и не всегда.
Только 2 эти буквы почему-то.
Я прикрепил скрин этих делов.
В чем тут может быть дело? Посоветуйте решение.
Спасибо.

ВложениеРазмер
Иконка изображения cod.jpg6.75 КБ

Комментарии

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 12 марта 2010 в 2:17

Вы правда думаете что API придумано чтобы поржать и порождать тормоза?
Не будьте умнее друпала, хотите быть умнее - пишите свою CMS, а пока вы работаете в контексте друпала, вы должны следовать его правилам

Аватар пользователя kissfm kissfm 12 марта 2010 в 12:47

"RxB" wrote:
Давайте, я за вас и код напишу

Я не просил код писать, а только если кто знает, то в пару словах описать как избежать этой неприятности.
"penexe" wrote:
а ваш код сложно сюда скопировать?

А что вы хотите, что бы я скопировал сюдаь? SQL запросы на insert?
Ну вот:

  function getVar($value){
                if(isset($_GET[$value])) $data=$_GET[$value];
                else if(isset($_POST[$value])) $data=$_POST[$value];
                else if(isset($_REQUEST[$value])) $data=$_REQUEST[$value];
                else $data='';
                return $data;
  }

$sess_id=(int)getVar('hid_sess_id'); // ID сеанса
$film_name=getVar('hid_film_name'); // Название фильма
$date_session=getVar('hid_date_session'); // Дата сеанса
$time_session=getVar('hid_time_session'); // Время сеанса
$tickcol=(int)getVar('hid_tickcol'); // количество билетов
$tickets=getVar('hid_tickets'); // заказанные места
$summ=(int)getVar('hid_summ'); // сумма
$delivdate=getVar('hid_delivdate'); // дата доставки
$fio=getVar('hid_fio'); // ФИО
$phone=getVar('hid_phone'); // телефон
$adr=getVar('hid_adr'); // адрес
$dinfo=getVar('hid_dinfo'); // доп.инфо
$rndm=getVar('hid_rndm'); // рандом

$result1 = mysql_query("INSERT INTO zb_orders
(film_name, session_id, datetimesess, tick_col, places, status, totalsum, delivery_date, fio, phone,
adress, info, order_date, order_time, rndm)VALUES
('"
.$film_name."', ".$sess_id.", '".$date_session." ".$time_session."', ".$tickcol.",
'"
.substr($allplaces, 2)."', 'no', '".$summ."', '".$delivdate."', '".$fio."', '".$phone."', '".$adr."',
'"
.$dinfo."','".date('d.m.Y')."','".date('H:i')."', '".$rndm."')");

И еще! Этот код не в блоке Друпала, этот код в скрипте лежит на серваке в отдельном php файле.

Аватар пользователя kissfm kissfm 14 марта 2010 в 23:18

Ладно, сам нашел.
Если не знаете, то вот вам решение:

// для записи в БД
$fio=iconv('utf-8','windows-1251',$fio);
// вывод с БД и отображение
echo iconv('windows-1251','utf-8',$row['fio']);
Аватар пользователя riyuzakki riyuzakki 15 марта 2010 в 1:01

"penexe" wrote:
код одна сплошная дыра

Теперь уже две. Две сплошных дыры. Топикстартер, Вам самому не стыдно такое выкладывать?

"kissfm" wrote:
Ладно, сам нашел.

Что нашли? Это называется решение? Вы программированию в Индии учились?
На всякий случай подскажу: при коннекте к мускулю можно кодировочку указать.

Аватар пользователя kissfm kissfm 8 апреля 2010 в 1:03

А чего тут стыдного? У меня нет общепринятых стереотипов по данному вопросу. Какое нашел решение - такое и использовал. Работает, проблем больше нету...
И подсказку можно ли реальную написать тут об указании кодировки?

Аватар пользователя kuzyakiev@drupal.org kuzyakiev@drupal.org 8 апреля 2010 в 1:47

топикстартер
начни хотя бы с того что поищи конструкцию
db_query("SELECT .... %d ....", $value);

"kissfm" wrote:
У меня нет общепринятых стереотипов по данному вопросу.

Это ты оправдал таким образом уязвимость кода? Лучше бы спросил в чем дыры.

Аватар пользователя kissfm kissfm 14 апреля 2010 в 19:52

Ну, оправдание-не оправдание. Есть, что есть...
Я хочу получить указания на дыры в коде. Давай я посмотрю на них.