Проблема с перекодировкой

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

Аватар пользователя Scarrr Scarrr 30 декабря 2008 в 9:35

Здравствуйте, столкнулся с проблемой перекодировки из кодировки Друпала utf-8 в win-1251.

Мне нужно перекодировать переменные, например $node->title в win-1251, иначе получаются одни закорючки вместо букв Sad

Пытаюсь использовать функцию inconv

$title1 = iconv("utf-8", "windows-1251", $node->title); - и потом уже работать с этими данными через переменную $title1, но так вообще ничего не получается сделать - программа вообще никак не работает.

Подскажите пожалуйста, как нужно правильно.

Заранее спасибо.

Комментарии

Аватар пользователя glu2006 glu2006 30 декабря 2008 в 10:27

Где закорючки то получаются? насколько я помню все браузеры и почтовые проги адекватно воспринимают кодировку utf-8

Аватар пользователя Scarrr Scarrr 30 декабря 2008 в 11:42

$title1 = mb_convert_encoding($node->title, "UTF-8", "windows-1251"); - попробовал вот эту перекодировку - тоже ничего не помогает, что ж такое, как эти друпаловские переменные вообще перекодировываются????

Аватар пользователя glu2006 glu2006 30 декабря 2008 в 11:42

Передать куда? на сторонний сайт? в другую функцию? на марс? Где и что не так отображется?
Не играть же всем в угадайку, что куда вы посылаете и для чего. )))
Напишите нормально про проблему, тогда ее возможно легче будет решить.

Аватар пользователя Scarrr Scarrr 30 декабря 2008 в 11:54

я передаю данные вот такой функцией
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

где в переменной $data частично используются друпаловские переменные

$data = array( 'title' => $node->title,
'begin_cost' => $node->sell_price,
'cost_type' => 'BYB',
'city_id' => '1',
);

вот таким вот образом - только надеюсь вы меня не будете принимать за хакера, если я использую cURL.

этот скрипт прекрасно работает и всё передаёт как надо, когда я написал его в кодировке CP1251 и сохранил его в корне сайта с расширением .php

но проблема встроить его в Великий и могучий Друпал, когда я написал этот код в хуке hook_insert() - все переменные перекодировываются и получаются одни кракозяблы. Ведь все друпаловские переменные только в кодировке utf8

Аватар пользователя Scarrr Scarrr 30 декабря 2008 в 11:57

или подскажите, как мне из хука запустить на выполнение этот скрипт - но опять же, тут проблема исключительно в переменных - переменные то ведь всё равно нужно получить из Друпала - и в нём то как раз и вся загвоздка

Аватар пользователя glu2006 glu2006 30 декабря 2008 в 13:03

Как вариант попробовать сохранить сторонний скрипт в утф8 затащить его в модуль друпли или просто если уже есть свой модуль заинклудить его в модуле отдать ему данные на обработку в утф8 он их соберет до кучи в единое целое и на выход когда будет отдавать перекодить в cp1251 или win-1251 хотя хз как он себя поведет в таком случае может также и отдаст кракозяблы, а может и нет )).
т.е. сторонний скрипт отрабатывает с данными в кодировке друпала, а вот отдает их предварительно перекодив в ту кодировку в которую надо.

Аватар пользователя Scarrr Scarrr 30 декабря 2008 в 19:20

так ведь проблема в том, что модули друпала (файлы с расширением .module) тоже ведь сохранены в кодировке cp1251 (то есть в той же кодировке, что и мой скрипт)

а своего модуля у меня нет, у меня только скрипт - я пытаюсь просто вставить код скрипта в файл .module, ну и понятно скрипт должен использовать друпаловские переменные для работы своей. И у меня нет никакой обработки - мне просто нужно передать друпаловские переменные, пробую их перекодировать перед отправкой, но ничего хорошего не получается Sad