Most úgy tűnik, hogy lenne egy pont, amikor utf8-ra konvertál [szerk: illetve nem konvertál, csak ellenőriz, és ha valid utf8, akkor beállítja az is_utf8 jelzőt], csak sajnos ezt akkor tenné, amikor már belerakta a <*> stringet egy utf8-szekvencia közepébe. Pedig ebben a történetben mindenki csak segíteni akart...
Kicsit megszórtam debuggal, azt vélem látni belőle, hogy a sv_insert az insert-offset-et byte-ként értette, az Oracle viszont character-ben adta. Ezt abból vélem gondolni, hogy az error-offset ékezetmentes változatban is 37.
/-----
oci8.c:ora_sql_error:1001 before insert offset=37
DO_UTF8=1 len/bufsize=53 cur=51 ptr=0x20126e0
0 1 2 3
012345678 9 012 3 456 7 89 0 12 3 45 6 789 0 12 3 45 6 7
0 1 2 3
012345678 901 234 56 78 90 123 45 67 7890123456
select '\xc3\xa1rv\xc3\xadzt\xc5\xb1r\xc5\x91 t\xc3\xbck\xc3\xb6rf\xc3\xbar\xc3\xb3g\xc3\xa9p' from duale
\-----
/-----
oci8.c:ora_sql_error:1003 after insert offset=37
DO_UTF8=1 len/bufsize=80 cur=54 ptr=0x20126e0
select '\xc3\xa1rv\xc3\xadzt\xc5\xb1r\xc5\x91 t\xc3\xbck\xc3\xb6rf\xc3\xbar\xc3\xb3g\xc3<*>\xa9p' from duale
\-----