кодировка в xajax

maxvd

Новичок
кодировка в xajax

Проблема такая скорее всего известная тем кто давно пользуется xajax
есть форма из нее получаются данные при помоши xajax.getFormValues
проблема в том что на выходе получется массив в utf-8 а мне надо в windows-1251 как мне это исправить (желательно что бы не сильно покоцать исходный код хаjax)

PS честно юзал поиск и не чего не нашел

-~{}~ 26.09.06 20:41:

проблему решил но решением в лоб.
просто прицепил к методу _decodeUTF8Data помимо использования mb_convert_encoding и iconv внешний класс для перекодировки с utf-8 в win-1251.
Не очень красиво получилось.
 

skynet80

rundesigner.com
Просто нужно при создании экземпляра класса икаяксреспонз задавать кодировку.
Или же просто по дефаултк переправить с ютф8 на вынь 1251
 

maxvd

Новичок
Автор оригинала: skynet80
Просто нужно при создании экземпляра класса икаяксреспонз задавать кодировку
Не правда прежда xajax.getFormValues будет всеровно отдавать utf-8.
XAJAX_DEFAULT_CHAR_ENCODING выставил с самого начала.
для того чтобы элементы формы отдавались в виде массива в нужной кодировке должен быть включен
bDecodeUTF8Input=true а он испльзует для перекодировки модуль iconv которого у меня нет.

-~{}~ 28.09.06 11:12:

/**
* Define XAJAX_DEFAULT_CHAR_ENCODING that is used by both
* the xajax and xajaxResponse classes
*/
 

Анатолий

Новичок
Или можешь указывать прямо в коде
PHP:
$xajax = new xajax('', 'xajax_', 'windows-1251');
и
$objResponse = new xajaxResponse('windows-1251');
 

maxvd

Новичок
Автор оригинала: Анатолий
Или можешь указывать прямо в коде
Я же говорю что XAJAX_DEFAULT_CHAR_ENCODING я проставил в windows-1251 с самого начала это не тоже самое ли.

Блин вот куски кода

PHP:
if (!defined ('XAJAX_DEFAULT_CHAR_ENCODING'))  {  	
define ('XAJAX_DEFAULT_CHAR_ENCODING', 'windows-1251' );  
}
конструктор xajax
PHP:
function xajax($sRequestURI="",$sWrapperPrefix="xajax_",$sEncoding=XAJAX_DEFAULT_CHAR_ENCODING,$bDebug=false)
конструктор xajaxResponse
PHP:
function xajaxResponse($sEncoding=XAJAX_DEFAULT_CHAR_ENCODING, $bOutputEntities=false)
Данные с формы получаю так

PHP:
<input type="submit" name="submit" value="сохранить"   onclick="xajax_save_bonus(xajax.getFormValues('save_bonus_form')); return false;"/>
и при этом
function save_bonus($form_data)
{...

массив в $form_data в utf-8
 

dem_ua

Новичок
была такая проблема :))
xajax может через iconv прекодировать в то что хочешь - нужно только в xajax.inc.php поставить вместо
$this->bDecodeUTF8Input = false;

$this->bDecodeUTF8Input = true;

^)
 

maxvd

Новичок
Спасибо в dem_ua за первый ответ по делу, но да этого я уже дошел сам (см.выше) :) а iconv у меня нету поэтому немного пришлось подредактировать код xajax и добавить внешнюю функцию для перекодировки (см.выше) :).
Просто я не люблю ковырять и чего-то даписывать в серьезные библиотеки (вдруг забуду и решу обнавить версию вот буду потом удивлятся) :)мне интересно есть ли другое решение?
 

Gas

может по одной?
немного пришлось подредактировать код xajax и добавить внешнюю функцию
имхо, так-как всё равно речь идёт о частном случае перекодирования, можно написать обёртку к iconv. В руки [m]is_callable[/m] и вперёд, зато код библиотеки править не нужно. Но это всё равно костыль ;)
 

horal

Новичок
может версия не та?

у меня все сработало после:
$xajax = new xajax('','xajax_', 'windows-1251' );

даже НЕ устанавливал:
$objResponse = new xajaxResponse('windows-1251');
 
Сверху