The marshalling converts each Haskell character, representing a Unicode
code point, to one or more bytes in a manner that, by default, is
determined by the current locale. As a consequence, no guarantees
can be made about the relative length of a Haskell string and its
corresponding C string, and therefore all the marshalling routines
include memory allocation. The translation between Unicode and the
encoding of the current locale may be lossy.