Ticket #5153 (closed bug: duplicate)
System.Environment.getArgs does not UTF-8 decode arguments even in UTF-8 locale
getArgs is implemented as simply dereferencing argv and returning a list of the octets passed as arguments, resulting in unexpected results for multibyte characters. I think it would be more natural if getArgs performed locale-relevant decoding, and a more low-level function (perhaps returning ByteStrings?) was available for when you really want the raw arguments.