Fixed: Leaving for someone else who as the same issue.
Clearing the msg.payload cleared the issue.
The csv row was in the payload and I had it still in the msg object for debugging.
Assuming the question mark was being treated as prepared statement and it was trying to replace the ? with the payload. setting msg.payload = ''; fixed the issue.
Thanks for the input, I couldn't see the forest for the trees
harry