A minor nit I found while passing a custom encoding to this function. It's quite cumbersome to have to specify the other optional arguments to this function just to change one of them.
Using keywords would also have the benefit of matching the lambda list of lisp-string-to-foreign.
Leslie