Ok, I can't claim to be an expert, but from my own experience, I'd say
Paul is very likely right about double-encoding occuring. However,
the question ends up being where that happens, and in this case I
suspect how MARC::Batch will work could depend heavily on what version
of perl you're running and what version of MARC::Batch you're running.
That might help too (I'd try to be on a later version of perl, the
latest of Batch::MARC ). (It also depends on how you're generating the
marc record, which isn't really clear to me.
It could also be that the leaders or the terminal as others have suggested.
One piece of advice is not to trust the terminal directly but pipe
into xxd. (And if possible, just try transforming the offending
record). Or use yaz-marcdump -v, which will also give the hex if I
remember correctly. (If it's c3 a9 in both cases, you know the
terminal is at fault)
Then try doing that without the binmode, w/ binmode :raw, etc.