serialize/iconv говно-символов.

Армян

Новичок
serialize/iconv говно-символов.

ситуация: нужно многомерный массив положить в одно поле БД, для чего используется функция serialize. Но в этом массиве есть строки с такими символами, которые заставляют запрос себя вести неправильно, причем mysql_real_escape_string их не берет... Я так думаю, что причина в кодировке - ну возьмите, например, символ черного кружка в кодировке ISO - и подставьте в запрос при рабочей кодировке utf8....

Я пробовал различные варианты перекодировок и т.п., но ситуация такая: либо ломается запрос, либо unserialize в итоге не может собрать в массив полученные из таблицы данные.. Кто может посоветовать, как либо убрать эти левые символы, либо экранировать их так чтобы они и запросу не мешали и сборке/разборке массива сериалайзом
 

Фанат

oncle terrible
Команда форума
не надо ля-ля

-~{}~ 27.04.09 16:26:

я могу посоветовать не пихать в базу массивы
 

Армян

Новичок
http://clip2net.com/clip/m3228/1240835624-clip-2kb.png
Вот они, эти гады

PHP:
$item = iconv("ISO-8859-1", "UTF-8", $_GET['name']);
$serial = serialize( $item );
// тут вставка в базу
после вытаскивания из базы, унсериалайз работает до первого говно-символа, и кричит "Notice: unserialize(): Error at offset 855 of 6336 bytes"
 

dimagolov

Новичок
Армян, в массиве бинарные данные или строки в какой-то кодировке?
 

admLoki

Новичок
Автор оригинала: dimagolov
admLoki, какая связь (кроме того, что ты шаман) между mysql и json?
А причем тут mysql? Пациент жалуется на неправильное поведение unserialize. Массив можно запаковать и через json_encode - это не принципиально.
 

serglt

Анус, ой, Ахтунг
admLoki
читаем еще раз топик, если опять не дошло, повторяем цикл

-~{}~ 27.04.09 18:44:

string mysql_real_escape_string ( string $unescaped_string [, resource $link_identifier ] )
Пациент скорее всего опустил второй параметр для функции.
 

Макс

Старожил PHPClub
блоб-поле БД также не должно иметь никаких "collate utf8_unicode_ci"
 

Армян

Новичок
dimagolov
троки в кодировке ISO-8859-1, которые и нужно перевети в утф8 и
запихать в базу.

serglt
а для чего указывать второй параметр, если соединение одно ?

admLoki
бейз это уже ближе к решению проблемы, спаибо! Однако хотелось бы разобратся, раньше таких проблем не встречал.

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

dimagolov

Новичок
Армян, ИМХО, но UTF 0095, который управляющий код MW никак в ISO-8859-1 не входит. А вот в Windows-1252, которую часто путают с ISO-8859-1, под индексом 95 входти символ •, но вот незадача, в UTF-8 он кодируется не 0095, а 2022 (впрочем, как и многие другие отсутствующие в ISO-8859-1 символы).
 

Армян

Новичок
аццкей_сварщег
только положить в базу\вытащить из нее.

dimagolov
да, действительно это кружок •. Видимо действительно спутали кодировки, спасибо :)
 
Сверху