Как расшифровать блоб в Firebird - PullRequest
0 голосов
/ 09 января 2020

У меня есть внешнее приложение, которое сохраняет некоторые данные в базе данных Firebird. Мне нужно прочитать эти данные в моем приложении PHP (но это может быть Java или другой язык).

Данные хранятся в таблице MY_TABLE с полем MY_FIELD

Тип MY_FIELD is [BLOB SUB_TYPE 1]

Я могу экспортировать проект из внешнего приложения в виде файла с SQL запросами, например:

INSERT INTO MY_TABLE (MY_FIELD) VALUES ('20.00;0.28478;0.32461;0.38308;0.44478;0.51408;0.59144;0.66252;0.72157;0.78807;0.86791;0.96909;1.0557;1.1364;1.2523;1.3681;1.4814;1.6107;1.7551;1.8755;2.0008;2.1728;2.3557;2.5319;2.7193;2.9123;3.1122;3.3309;3.5565;3.8044;4.0627;4.3347;4.5754;4.8581;5.0925;5.3717;5.6047;5.835;6.0827;6.3306;6.5275;6.7589;6.9458;7.1962;7.3849;7.5213;7.6636;7.7756;7.8486;7.9299;7.9847;7.976;7.8689;7.8012;7.6962;7.611;7.5166;7.4203;7.3154;7.1768;7.0413;6.8516;6.6693;6.4958;6.2994;6.1245;5.9358;5.7431;5.5659;5.3819;5.1849;5.0036;4.821;4.639;4.4637;4.2965;4.1315;#...');

Когда я читаю запись с помощью PHP, я могу прочитать :

0x000003cb00000082

Код ниже:

$query = 'SELECT MY_FIELD FROM MY_TABLE';
$result = ibase_query($firebirdConnection, $query);
$row = ibase_fetch_assoc ($result);
echo $row['MY_FIELD'];

Я понимаю, что это двоичная версия этого текста. Я попытался декодировать его, используя php.

Я использовал функцию ibase_blob_echo, и я получил смесь разных символов:

x�% �Ǎ1��e������w? S% �h \ E����, �6�� \ g��e�] �Y & ��r8n5tW���_��3�¶�E'���k �lS� *> GS ( б $ T] 3 $ 1sRVeHRSnzI6Z3eapj \ - v -@w4) XD [/ W15O + 3eTfQMi` CC - <9% Q� & �Q ׈� g̯h��o�� | '? �a�Y�����z�pI </p>

Код ниже:

$result = ibase_query($firebirdConnection, $query);
$row = ibase_fetch_assoc ($result, IBASE_TEXT);
echo $row['MY_FIELD'];

Точно такой же эффект Я получил, когда добавляю флаг IBASE_TEXT в ibase_fetch_asso c:

$result = ibase_query($firebirdConnection, $query);
$row = ibase_fetch_assoc ($result, IBASE_TEXT);
echo $row['MY_FIELD'];

Я использую Firebird 2.5.

Можно ли кодировать содержимое этой базы данных во внешнем приложении? Есть идеи?

...