2015-03-13 1 views
1

я пытаюсь вставить некоторые шестнадцатеричные значения в поле БД MySQLКак вставить hex/binary? в базу данных mysql?

это вид значения мне нужно вставить:

['D\x93\xb4s\xa5\x9eM\\\x14\xf3*\x95\xf9\x83\x1d*%P\xdb\xa2', 'D\xbf\xef\xb0\xc8\xff\x17\xc6Y6\xc6\xb4,p\xaa\xb1\xf2V\xdaa', 'D\xd7~~\x02\xd3|}\xfcN\xc1\x03\x97\x07\xb5<U\x16Y\x9e', '\xf3\xb6\xc2,Y/[i\x98\x93\x9d\xb2R\x93\x84\x12W\x1a3\x19', '\xf3\xb7\xce\x1f-n\x89\xb6\x87K\x9dsf\xcb=w\xab\x1a\xa0<', '\xf3\xbf7\x04d\xe6\xdf\xf8"9\x1d\x05\x01\xe4\xd4\xb0\xad\x80\xc0\xf5'] 

это мой стол

+--------------+--------------+------+-----+---------+-------+ 
    | Field  | Type   | Null | Key | Default | Extra | 
    +--------------+--------------+------+-----+---------+-------+ 
    | consensus | char(40)  | NO |  | NULL |  | 
    | identityb32 | char(40)  | NO |  | NULL |  | 
    | pubdate  | char(40)  | NO |  | NULL |  | 
    | dirport  | char(6)  | NO |  | NULL |  | 
    | ip   | char(40)  | NO |  | NULL |  | 
    | orport  | char(40)  | NO |  | NULL |  | 
    | identityhash | char(40)  | NO |  | NULL |  | 
    | nick   | char(40)  | NO |  | NULL |  | 
    | version  | char(40)  | NO |  | NULL |  | 
    | flags  | varchar(500) | NO |  | NULL |  | 
    | identity  | char(40)  | NO |  | NULL |  | 
    | digest  | char(40)  | NO |  | NULL |  | 
    | pubtime  | char(40)  | NO |  | NULL |  | 
    +--------------+--------------+------+-----+---------+-------+ 
    13 rows in set (0.00 sec) 

в настоящее время я добавляю шестнадцатеричные данные, так как я бы сделал обычную строку, но это приводит к добавлению нечитаемого ввода:

D??s??M?*???*%P? 

Как можно добавить шестнадцатеричные данные?

+0

[Поиск UNHEX() и HEX()] (http://dev.mysql.com/doc/refman/5.0/en/string-functions.html). Использование довольно прямолинейно. –

+0

Спасибо, я попробовал (UNHEX (HEX (identity [c]))), но получить ошибку NameError: имя 'UNHEX' не определено – user2065929

+0

Я не думаю, что это либо latin1, либо utf8. Возможно, это двоичный или какой-то другой тип BLOB? –

ответ

0

Проверить CHARSET

CREATE TABLE `t` (
     `id` varchar(32) NOT NULL, 
     PRIMARY KEY (`id`) 
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 
0

Это не шестнадцатеричные значения.

I может быть далеко от этого, но единственный способ я нашел, чтобы вставить свои ценности, как это было:

$string = 'D\x93\xb4s\xa5\x9eM\\\x14\xf3*\x95\xf9\x83\x1d*%P\xdb\xa2'; 
$pattern = '#\\\#'; 
$replacement = '\\\\\\'; 
$insert_value = preg_replace($pattern, $replacement, $string); 

После протекающие вставки. Вы можете использовать VARCHAR(256) для столбца.

Я уверен, что есть много способов улучшить это.

Очевидно, я нахожусь на части Python SO. Я думал, что это PHP. Это то, что я получаю для подписки на несколько тегов.

+0

Я думаю, что вы правы в том, что они не являются шестнадцатеричными значениями, являются ли они двоичными строковыми значениями? – user2065929

+0

Я честно понятия не имею. Расшифровка гексагона немного выше моего уровня оплаты. Если вы хотите получить качественный ответ на часть C stackoverflow, эти ребята помогут вам. –

Смежные вопросы