Not sure if its applicable, but is it possible to give a file as an arg for you clamd clamspeech? If so, that might avoid any tinkering by the shell/locale.
No, this is not implemented.
I debugged it a bit more and this is what I found so far: When using a terminal with UTF8 (e.g. echo $LANG = en_US.UTF-8) and calling the clamd client, the UTF8 string is encoded as \u strings. If I use "ä" (UTF8 sequence 0xc3 0xa4), then I can see the ASCII text "\u00c3\u00a4" in the RPC request string. Now I think the problem is that in univalue_read.cpp, the function getJsonToken does some strange looking codepoint conversion which I don't understand. But looks like it expects UTF16 (already too late and some beers).
If it converts it back to UTF8, then one possible solution would be to detect if the terminal is in UTF8 mode for the client, and then converting the UTF8 characters to UTF16 for the RPC call. Shouldn't be too difficult, just the inverse code of what you have in getJsonToken. If someone wants to do it, write here, otherwise I'll try it tomorrow.