Декодирование LOB данных Oracle
Вожусь с Oracle database средствами cx_Oracle в python
Доходя до момента получения данных типа cx_Oracle.LOB (конкретный тип в БД - BLOB) считываю их методом .read()
Информация курсора:
('MTDATE', <cx_Oracle.DbType DB_TYPE_BLOB>, None, None, None, None, 1)
Получаю bytes (ниже, объемные данные, не рискнул сокращать), но не могу их раскодировать. Перепробовал кучу кодировок и подбором на онлайн ресурсах пытался найти, но не выходит, постоянно ошибка. Вроде то, что байты начинаются с BF указывает на то, что это utf-8, но выходит UnicodeDecodeError
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfe in position 17: invalid start byte Кусок кода:
rows = cursor.fetchall()
print(rows[0][1].read().decode())
Возможно я что-то не так извлекаю из БД? Или все же кодировка тут какая то редкая? Заранее спасибо за помощь!
b'BF\x01\x18I\x00\x00]\x00\x00@\x00\x00\x00l\x00V\xfe7^6\x8eg\xac\x16\xcap\xeb\xa9dG\xff[x\xc2\xa4b\xcb\xb2h\xe5[M\xcd\xf7\x81M\xa8\x1b\xa8\xa6\x07\x0f+h\x15En\xd7\tP\x01\xb5\xfc\xe9\x85\x809\x18\x19\xb7\xd9\xd6\xd2\xfc\xb9}\xa7\x0e\x0fC\xf8\xea\x1ej\xc4\xe2\xf3\xab\xb1\x93\xaf\x18\x92\x117\xbc\x03\x0f\xa2\xb0\xdf\xdb\x95\xa4\xdc\x95\xa9\x1d|\xd6\x1b\x18\xe1\xa0 >\x9at\xb5\xa6\xa2\x84\xfa\xe8K\x02\xce\x04\xc9\xc4\xd8\xc9\xd5\x05\x06\x8c/\xe9`\x82:\xd7\xc1\xb5\xbe{t\x10\x84I\'\xb3\x02\xcc\xcd\xef\xc9{\xc6]\x15JZ\x0e\t\xec\x12hS\xd0\xfdk\xe9\xda\xb52\x1f-\xcfQ\xd8\xe7}\xech]\xb0\x7f\x8f\x07\xcf\xb1H\xd5\xf4\x95\xb3\x05\x1cZG\x9e\x16TI\x9e\x87s~\x1a\x13%\xab\x84U\x0c\xe9\xd9\\k\x16r\xe1\xbf\xe8\x1c\xd04\x0e\x01\xda\xc2\x81\x8b\x1c.Ks-]\xb5K\xe9=\xb7v\xdb`FC\x9f\xdf\xa0>\xbd|"\xa4W\x0cH\x1e,\x9d\x8f/\xe8S\x96\x13\xa0<\x05\x9fI\xf6\t\x82\x9e\x99\x1a^?\xab\t\'\xc5\xda\xbax+<!\xf4\xc76\xab2\xdb\xb2\xc6#\xd6<`e\xf5\xc3h\xc2\xa2\xb3A\xdf\xd6G\xc3\xa9\x1e=\xcc\x02\xef`\x8b\x94\x9d\xa8\xdaX\xea\xd2\x91E]\x93\xb8\xdbg\xf7T\x9fF\x11\xb2\'\xbd\x06\xa3\xcc\x98\xc6\x03\x10\xb0\x87\xd6\x81\x08\x9fx#\x13\xf9\xeerc\xe6\xb8Y7\xeb\x8d\x98\x87\x1a\xda\x19\xe4\xef\x95S\x92W\xab\x94\xfah\x1b\xe3q\x94]h\xafO\xf6\xd4\xc4\xc1c\x19*3;h\x874\xa5\xa3\xbe\xec\xd6\x8e\x9f+V$\'\x96\x18v&\xdd\x03\x1c\xe7X\xc2\xb2b\x0cr7\xb42\x12\x12\x1d\xa3^rm\x1f\xec\x9e\xe9\xfb:D\n\x8e\x85%.\xbf\xab\x99\xe3f\x1d\x97~k!\xce\x8cC\xd7\x8d\x93\x0c\xfb\xf0\x1b\xc0\xb95YL\x07<a\xa4,\x06\xa7\x8d\x10\x18{\x04\xdbg\xfc\x9c9\x9b/kL,?\xcaa\xe8\xb0\xe8\ns\xa3\x8fmQ\xfb\x02\x8f\x9d+\xb2\xa6\xae\x07\xdd\x017j\xe4\x1d\x16\x86\x1e\xbf\xf6\xdf\xf5\xba"/\xbc\xea?7|\xed\xa2\x9a/\xb5BFQ\x12\x0er\xd9U\xab\xf0\xbdj_\xa9\xb0\x95\t\xbb\x83M\x9a\xfd\x1a\xb6\x0b\xcf\x8bT\xc0%\xa2\xafC\x1br\xed\xe5t\xcf\x0e\x10\xe9\xf8:n\xeb\xec&\n\xb5gB\x1f\x01\xb5\xe1\x9e\xd1\xd4\x08b\x81n>\xf5\xe9\xa0,KC\xb3|\x1b\xdb#"\x14\x01)\xb5\xe68\xd9\xee\xe5\x9a\xa8\x9c\x17\xfc\xabz\xb5\x88\xa2\x8aL\x15\xb0\xa7\x0c/\xa95q<\xa4`.X\n\xad\x17\xdf\xdaZ\xfd\x06\x0cU\x19\x92\xa1\xf2]\xc3+\x0fJ\xb3\xb5z\x15\xf1\xe4dO\x7f\xad\xbf\x99\xd6\x00]}\xadW\x1e\x7f\xf5\xe0y\xa7.)7\xf7\x8c\x92J0\x80\xe2\xcb)o\x97\x02a\x95\xcd\xbaT\x16km\x8b\x06k\xf6\x80*\xff\x8e\x02\x1f5\xa8f>`\xad\x04\x84\xaf\x81\xa7\xeb\x99\xb4\x8e\xdf<<r\xfb`\xf6/\xb9\xd5\xc2\x0c\xf7\xaf\xe5\x06\x96\x88wC=\xf3\x80\xe4\xc0\x97\xcb\x1e\x8b\xfb\xd7\xa9_\xfa\xfb\xcd\x12!\x19\xe3F\xc6<\xe8\xccT\x1a\x17\x18\xca\x04dQ\xfb\x1d\x02@a\xd9\x9d\xcd\xd1\x07Lu=\x1f\x86te\x7fk\xad\xecF\x1a\r\xc1\xcc\xb7\x04\x93\xba\x94\xd8\x02O\\@Q\x9a\x87T@5\xad\x90B\x1d\x85\x8e\x8e\xad}\xae,\x95\x95G\xea6\xaf\xfe\xdcj\xa5\x9f\xfbt\xb0\xe2\xf2\x849\x80H\xba\x06R\xbd\xc3\x8f_\xae\xac\x04\xb3+\xbd\xd4dH5\x7f56\xee\xd2\xcdA\xed\xa9\x8e0\x97<p^\x9f\xc1 \xb7\xb8k3\xaf\xec\xc7\xd5\xd2\xbbif\x16\xc5\xdar\x98\x90\x11*TQ\xa6\xbebH\xf23\x05\x10\xbf/A\xff\xaf\x9fS\xc8\x9c\xcd\xab\xbd\x9d:\x82eWJ\xf3e)(p\xbd\xe8H\x8d\x95\xae(\xd5\xfd\xe0\x8f\x14<Q_~\xb8\xe2\xcd\xd6.\xa3Br\xdb \xbdr\xb8\x07\x8f\xc9\xb4\xd3\x90\xa7|tN\xa0,\x8d\xf7\x1b\xd1\xf6\xdd\x10^\x0b\x9b\x83\xdd\x9fl\xe2e\'-.\x82\x9d\xf7\xaa\x03\xc9\xdfJx~D\xbf\xb8wm\xd6$,\xfcc\xab6\x1aA\xa1i6\xce\xef\xd0:\xdf\xaa?\xd9\x97\xb3\x0e\xf1\xf7\xafh\xef\xf1b\xc0\xec\x8c\x0c\x96R\xfd\x10\xf9V\xadV\r\x18\x13\x0b\x88\x0eg\xbc\x9b\x84\x89\x8d1)r>kg\xd3\n\x0cy\xe5gHj\x97,\xf9~\xbd\x15\n\xc7\xf8I\xbfXqq\xfb\x88\xa5\xd38\x02\x04@(\x03M[\xc93\xda|\xd5\xdar\x93\xd2\xd6\xc1\xe6\xebD\xba\r%\x84\xc6\xa1\xd7\x8d\xa7\x96\x04\xfc\xb8ef\xa6\xb6=V\x9d%k\x89P\xef\xbe\x8a\x1f\x85\x87\xd4`!\x8a\xc8\xc3\xcf\x03A(&\xd9\xbe\xfc\xc6\xdf\xf6m\x89\x0cW-\xd1fU\x19\xd7\xa1T2\x02\rl.\x07Ki\x1aj~\x01]\xac\xc2\x08\xd4\xc30\xdc\xf0\xc7\xb1(\x13\xcd\xfe\x81\n\x0f\x9c\x95\x04\xdf^\xabYJ\xc5G&\x08P\xef\x08w3\xdbH\xef1!\xfdY\x0f+(\x9c%<[\xed\x05\xc1\xc5\xe9\xcd\xcc\x94\xf3\xc4{\xdf\xa5\x82\xce\x99Ym\x87\x82)\x9e\xe3I`\x1e\xbbx\xa0>\xc9\xd6\xc7\xc3\xc4\xe58\xdf\xe0\xd4\xbam\x0b\x8c\x08\x7f3\xe5\xee\xd2\xe9\x940k\xf4[\xf6\xcb\x0e\xbf\xa0$\x0c1*\'\xe0\x8d\xf0\xeb\xf5E\xec\xbc\t0hm\xdbP\x0b\x1d(\xec\xa2\xb0s\xc7\xa0\xafK\xc18\r5"7\xc9\x1f\xdc\x12n+\xad\x8eG+"\xdc\x0f\x99\xe9W\xf6?\xb3Z?\xe0\xde\xb9\xdd\xcd\xc12\x84S\x93\x91\xae\xc5T\xbdJ\x92\x84\xe9\xba\x89\xc4dF\xb6\xf4 \x96\x02\xff\xed\xe6[f\n#\xcd\xdf#\xe7\xe4\x92\xd9Pn\x83V\xd5\x82\x8a\x1a\xc9\xf7\x8ea\x97$\xde\x8cV0?k\xbb\xdc\xa3\xfcQ\xddI^\xd0\xaa\x949\xb4\x94A\xa3\xce\\\xe9U\x19&\x8f\xd7p]:\x02}\xf2v$\x17\xba\x03/\x08\x13\xe9H\xd8Iq\xb3\xa8P\xc6\xddL\'\xc2\x92r!\xc0\xe40\xf0\x7f\xc6<\xaf\x86\xe7\r\xaa{\xb4\x0cHYOb\r\xf8\xb1O@[{$\x1a\x81\xe1P\x96\x8e(v\xf0\xee/\\\xcc\xf99\xe9q\xb4\x1b &\xe1\x1a\x06\xff&\x90\xb1h\x04\x81\xac\\\x8a\x06FIPz\x07\x0b!\xec\x0b\xc4\xd7i9J\x83[\xeb\xbc\x8a\x88\xc7\xcd\xc1B\xf5\xb0\xac\xf97\xc9\x8f[\x15U\xed\x87u\x80\xae\xd6`_L\x89\xe6N+\x82\xe8\xb1\xdf\x00\xf6\xcc\xaf\x84\xe7\x9d\nA:\xae\x0b.2\xdc\x9a\x87>\x8d2LX\xf8hI\xd2K\xbd\x93\x90<\xbe\x9e\x81\xac8\xf2\x16\xa97#\xfc\xb5\xbeb\x97\xd2\x8f\x84\x08]\x14\xc6!Q\xa2\xfe\xd0\x91\xaax\x9e\x1bSI\xa1\xad}\xba\xc8F\x05\xd2%\x9d\x0e\x07l}\xcag\x0f?\xa0\xeb\x85\xc6V\xb3~\x95\r\xdf-@\x83\x08;\x95\xde\xa1jq\xf3\xb7\x04\x91\x0f.44y8I\xf0\xa4\x9dG\x05\x1c\xdb\xa9Ztqx\x1a\xe3:\xa9\x85\xd6\t\xfd\xa0G9\xf7\xb1\xd0\xdc}\xcc3\xd9g\xe0 \x08J\x14\xa1\x00\xdaK9\x9d\xf15\xec\x1e\xf7y\x95\x97o\t\xba\xaa#] \xcd\n\xe3\xf1#\x87=\x8d\x03\x15\xf4\xaaG\xb1\xe0\xbci<k\x87\x1b\n\x9d\xec\xf0|wYP\x85\xff\xfd\xd6\x94\xa1%\xdeZv\x9a<\x8fc\x14r\xbbG\xe1\xb52\xaa\xaa\xe9\xbcS\x99\\"\x12\xe3\xb2>\x19c\x05\xec\xd8\x8e\x8a\xa5\xfc\xe1\xd9KL\xd3\t.88\xccc{?\x03\x91j\xeaAz;\n\x85u\x97\xf6cW\x11\xa2i\x16\xf9\x93\xe8l:?\x8fj\xf2\x1e\x02\x8ae\xd2,\x1c^\xf1\x83\xad\xec\xaf\x04$t\xbdM\xfa\x18~\x0b\x9f\xb7\x80=\xac\x9f\x8e$\xaf\xaf_\x89A\x13\x95\xce\xee\xeb\xe2\x0eR\x19\x8cm\xf5\x10F@\xb9\xad~!-\xa0\xf6\xbd\x1f`\x1f8T{<\n\x85i\x1d\xa3Ox\x0bs \x0c\x7fVQk\xc5\x8e\xc9`7Y ^\xdf\x12\xb9\xaeX/\xb64B\x88\x06\x94^M\x15\x0b\x9b7\xf7\xa6k\xa8\x17#\xe6S\xeb^\xd0\x03\xfd\xac\x19]\x0e\xe6\x9d\x10Tg\xf1P\xef\x1dY{\x17mW\x14\xad\x9d\x15e\xb1\x88+\x14\xdeK\x13p\xc8\xf0@\xd8\xce\x80\x1a9\x7f\xbd^\xdew\x8b\xef\xb7K\x11\x8ek\xc8Q\xf5\xc0\x82btE\xc2\x02r$}O\x19\xff\x01\xd0\xf3\xad\x9a\x1f?\x89\x03=\xce\x8d\xaa5UKg\x92\x11\xb1f\xca\xc5\x9a\xa3\xfd\xdd\xf3\x9e\xc7\xeah\x9b\xbc\xaf\x11\xe0in3]\xa7\xd8\xb3\x86\xdf\xf6\xa1M\xd3\xf2\xc7\xfb\x89\xd0\x1c 3\xae{S\t\x85{\xebU\xeb7\xbd\x8eO\tF\xc8a\xed\x854\t6\xfa\xe3\xa8MN7$\x07\x9b\x93\x12\xa1\x01(H IB\xd2\xce\x9c\xebt\xdc\x81\x8f\x80R\xb6\x0fW&\x98,a\x07\xcb\xc7\xbfS\x13\xabZ\xc8\xef"xoF(.co\x1e\x80\x01!\t\x1b\xbcP`g\x97\x8f\xf5\xd8\xd5X\x9a\x0f\x19\x04\x81\xf5w\xaakdq\x9e\xcd\x19\x8b\xfe\x88\xc3\xe5EN\xd0P\xa0\x8cT\x9f9&\x1eW\x81\xd0\x0eaV\xeb\xe1\x00\rA\xcd[\x07e-Rd?L:\x9dEHy\xd5_8\xd6i\x99\xc1\x81\xa0i\xb9\xa4\xad\x16\xefX\x0e\xbd\x07x\xb7l\x9a2\xc9t\\9m4*\x1c\xd0\xb1\xe6\xdf\xdc\x99\xeb\xb5\xbfM\x9d\xcdH\x1bV\xd8Z\x8d\nWL\x82[\xbd\x9e\xbcP\xa5`n\x85\xfb\xe7\x03\x7f\x9b`@6Z{.\x8c\x19\xe0\xf0\x90\xf6\xe8\xd1^\xec\x98[H\x82\xf2\xad\x0fy\x8e\xd7\x8e\xeb\x8c\xae?e\xd7p\x80\xbd\xf4\xad.iJ\xe1Um\xadW(\x96\xc6\x86\xec!\xc6j\x08ay\xcf\x9f\x81r\xa3\x92\xe2\xaek\xb3z\xc9\x19\x08ZB9\x19{\x97%(\xb6\xd8\x1c\xfe6!\xc5\xf9"\xc67@\xd5\xd1^e\x91i\x87\xdb\xa9\xce\x19\xa4\xcaNY\x11\xcf_Vt\x1be\xa3\x03L@\xa0\xac/?_\xb88\xee\xd1}G\xfbm+3t\xf9\x11fv\'\x04\xf91Jkj\xda\xd5\x9dw\x8d\xac\x14\xf3\xf4\xfa]/r(\xb8\xa2\x85\x14L`y$\t\xe8>\x93n\x8aq\xbc\nk$m\x80l\x8d\xea\x8d\xd8\x91&\x9a`QG^\xea\x8c2\x14\xe3R3j\xf6\xed\x93_\xfet\x0e\x94\xe5\x08\xa0B\xbb0R\xdd\x84\x9e\xbel\x91\xa0\xfe\x18\xb1>\x8e\xa2\xe1\xa8\xc8j\xb1#6\xab\x14m6\x17\xba\xa5\x91\xee1a]\xde\xff,%\xfd\xce\x84\na\xefG\xba3\x18\xc3\x8d\xf9E\xd0)\xf8\xa1\x16\x1b`\x0f8!;\xaf\xba\xc0.\x88}"?L\x17j\xf4\x1e9U\xb1\x01sC\xfe\xb6\xb6\x97mq\x1a\x0fVE\xe6\x87\x86Al\x90G\xb0\x98\x0e\xe1\xd8\xa7\xe3\xad{\xe9I\xed\x93\x88\x038; \xb5\x84\xac\xa7\xa9X\xfax\xbc\x7fIO\xd9\xc5\x961\x8f.\xd0\x98\xd5q\xa6\x92\xb8Tp\x11(\xc6I\x13(\xd1G\xf4 \x9b\x0f\xcb\x84\xe6\xf0\xd5o^\x80t\x14\x91\x06g\x0ebB\x9aI\x8d\xdfb\xc5\xf4"\x1e\xa70\xe0\x1a-4\xe5\xd6\xefBP\xa9\x0e\xaeK]\xcc\x91\x14\xd9\x99\x03\xe5J\xbcK\xd8\xe6k\xbd/\xdc\x8d\x947u\xb8\x0c\x03\x19\x7fnP\x95\xc4\x11\x0b\xb5mOL\x13\x07)b6\xd46\xcc\x04\xc4\x0cX\xda\xf5\x08y]\xeb\xcd\x14e\x95F1\xd2\x0cQ\x1dC\xf4\xa8%M5\x1f\xc2Wz\x1c\xec$\xbf\x175\xd3g\xad\xcb\xa2R\x8c\x93sa\xc4\xc7\xb3\t\xd9d0\xf27\xd2\x8b;<:f\xe5\xbe\xb7\xf7g\xdb\xfa\tg\x92h\r\xe3Rq\xd0\x08\x02\xd6\x13>iT3\x7fu\x04U\n\xa2&\xd8\xc3\x06\\w\x1c,\xf9\xae\x7f\xe3\xbbM/\x7f\x13\x9d\xd6 \x19A\x15\x16\xd1S\xa5\x86(E\xf1\xd2(\x81\xf34 h\xe8\xb9/\xb8\xf4"\xaf\x0c\xd0\xd6?\x17h\x91\xe1\xa1l/\xad[\xa7\xe7\xdcz(\\\x15\x17e\x7f;\xa8/\x0e\xb1\xd5\x81\xc5?Ah\xe0\xf6\x8c\xa5\xb13\xbc\x8b\x17.\xb7\x93O\x17Zd\x05\x82\xc7\xe8\x14\xbeR\x9a\xb2\xff\xe7\xdd\x88(\x9do\xa6\xc0\xdc(\xe4^a\x8c\x10#\x1e\x86\xc0\x91,h\xf8\xb2jr\xf8\xee\xd9\x8dZ\x14\xdc\x90e\xf3N\xd1\xd7f&\xa3\xf2?\xcbA\xbd\xce\xe7\x0bL\x16\xa5d\xb3\xce\xc8\x0bD\xb1\xdb;\x05\x00\xe0 e\xde\x12VCa\xbbE\x89\xf2\x10\xab\x8c\x9e^$z\xef\x8e\xda\xcc!]\x1d\xbd[0?u\'\x06\xaej\x14jGS\x7f\xf9O\xec\x86\x81\xcf&\x0b"\x82\xa8\xcdl\xb8\xbe\x9c\xd5ox\x85\x99\x1f\x93\x92\x8e\x9c\\\xd3\xd2\xe6\xe3\xf0R\xc1N7\x19\xfd~v\xbb\xc0\xd6E\x98By\xfa\xb0\x8ba\xfd.l\x94h\xa5\xa8\x9d\xea\x95\xf0O\xf2k\xdd\xeb\xdd\xdad2\xd6\xd2\x12\xdd\x11\xf0\xaa\xcc\x8a\x82\xb9\x80\x18\xf9C\xa0\xb9\xf5}\x868,E\xcbW\x82P\xb6\xe8T\xce\xf4\xb4\xf1\xc4\xd0%\x06{\xe34\xf2\xc5\xa6\x8c\xef2\x01(\xc1m\x03\x08\xde\xe7\x9dQ\xeeb\xde\xd1B3\xebJ\xf4\xfb\x0f\xd4\x94c\x0b\x16\xb4\x1b\xc5\xf9\xe0\xe2c\xe8\xc7\xf99W\xd0\x8aF[Y\x14\x13KmM6\xf3\xcf\r\xaft\x91\xfe\xbc\x00\xc0\x7f\x8a\xc9\xd8>~\xf3\xab\x99\xd2\xbd\xa1b\xaf|\x7fc\xc6\xdb3\x91\xf9k \x80\x9b\xe3M\xb5\xff\xc1\xf3`\x08\xd2Ai(gD\xe31[44\x94\x85\xca\xe3\x1b\xd2\x9fWZ\x9c6\x85\xed\xf84/\xbc\xfcG\x00j\xb5\x85\x1b\xe8\xbb,\x87\x08\x00\x98\x86\x13\xaf)\x80_\x10\x9e\xe7\xfb\t\x9em\xef3\xa7\x94\xc0\xa6\xbe\x8b\x11\xfc\x83\xb5\xb1\x167\x1bi\x81/\xe2\xa3\xbd]6M|\x8b\\N\xf5\x95-\xa9\x10\x97q\xf3\xfb\xc6\xeb\xe9\xcf\x1a/\xe0\rAI\x8a-\xc86\xd9\xfa\xa0\xc3\xc8%\xa5\x12\x13\xeb^\x12X\xae\x02\xbaj\xa9\x0b\xdd\xed\x18\x16\x9fV\xa4\x82e\xb3\xe7Ms\xa6\xff#\xa3au\x07s\x9f\xa0\xed\xe2\x82\xd4\x12i\xf575\xa8g\x99\r\x8dL*:\xc3\xb2\x1eo\xe4X\xebs\x87pd\x00Jn\x0e\x1a\xbd\xae\xd7^\xe6\x9bY\xe4\xa6\x88*^\x13<\x1b,\xf5$\xee$\x88\xd4[8\xfa4\x82\xa70S\xbb\x1f\x1d\tq\xf6m\x99\xf1\xc4\x17!\xcd\xca\xea;\xd9\x0fY\xfc\xfd\x85\xc3D\xd9\xb3|\xe7\xf3\xe5c\xdew\xbf1`[6\xbb&>JHd\xebZ]\xd9\xf4\xc7\x1d4\xe0\xc6g)-\xad63E\x86>\x93\xacA\xe8\x07V\xc9\xf8\x03\x11^#\xeb\x00'