I've figured the problem. The answer is in this thread:
viewtopic.php?f=8&t=8738The Database connection character set needs to be set to "UTF8" not "utf-8" (the config documentation could be a little clearer with this.)
Thanks for the help in troubleshooting this.
The settings I'm using now are:
; Default locale
locale = en_US
; Client output/input character set
client_charset = utf-8
; Database connection character set
; Must be set to "Off" if not supported by the database server
; If enabled, must be the same character set as "client_charset"
; (although the actual name may differ slightly depending on the server)
connection_charset = UTF8
; Database storage character set
; Must be set to "Off" if not supported by the database server
database_charset = UTF8
; Enable character normalization to utf-8 (recommended)
; If disabled, strings will be passed through in their native encoding
charset_normalization = On