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. Jon Gorman