UTF-16LE в базе - проблема с выгребанием данных

PartizaneN

I speak PHP
UTF-16LE в базе - проблема с выгребанием данных

Возникла проблема - не знаю с чем связана - с пхп или с MySQL...

Вобщем есть модуль фрэймворка, рисующий красивые таблицы по майскль запросу...

Итак, необходимо сделать Contcat двух полей - одно инт - второе - UTF-16 (не поддерживаемый БД, но как выяснилось - хранить можно)... Делается, например, следующим образорм Concat(id,'###', name). Но когда делаешь explode - получается уже бред самый натуральный... Добавляются доп символы какие-то... Если же без конкат делать, то всё в норме.

Скрипты стоят на нескольких серверах - раньше проблем не было ни с одним, но вдруг началось именно с одним из серверов... ПО везде одинаковое - ФріБСД 6, php 4.4.0, MySQL 5.0.18.

-~{}~ 30.03.06 13:12:

Итак, проблема всё-таки в ПХП - после того, как делается explode - строка превращается в бред
 

PartizaneN

I speak PHP
В запросе - Concat(id,'###', name)

в пхп
$contract_function=create_function('$param','
...
list($id,$name) = explode("###",$param);
....
$tcontrol->input_vars["title"] = mb_convert_encoding($name,"UTF-8","UTF-16LE");

');

Всё работает на 2 из 3 серваках... Причём раньше работало на всех..
+ если не эксплоудить - всё хорошо...
+ если заменить эксплоуд чем-нибудь еще - любые операции приводят к одному и тому же результату - добавляется куча пустых байтов...
 

PartizaneN

I speak PHP
Автор оригинала: 440hz
> list($id,$name) = explode("###",$param);

покажи $param перед вызовом?
А ты его сильно и не покажешь - УТФ 16 всё-таки...

А вообще получается что-то типа такого (если, например, все английские буквы):

23###a\0h\0e\0j\0 и т.п.

а после - добавляются почему-то байты - получается что-то вроде a\0\0\0h\0\0\0e\0\0\0j\0\0\0... Я вот подумал, может это всё из-за локали. LC_COLLATE какое-нибудь... Время уже не хватает проверить по-нормальному...
 
Сверху