Hi,

I noticed that dovecot's MySQL driver doesn't play well with UTF-8 encoded 
strings. I presume this issue has been around for a while. However, it still 
fails with the current release candidate 2.2.16-rc1.

I have been using the sieve extdata plugin with a MySQL-backed dict to retrieve 
a folder name that is then passed to fileinto:

fileinto :create "${extdata.folder_name_drafts}";

Whenever this dict returned a string with non-7byte characters, a line such as 
the following popped up in sieve.log. (This example query should return 
"Entwürfe".)

error: folder name specified for fileinto command is not utf-8: Entw?rfe.

Although my MySQL installation is set up to use UTF-8 as the default charset on 
every level (config, database, table and field), and the character_set_* 
runtime variables all yield the value "utf8", it still seems that the mysql 
client library must be instructed to actually use UTF-8 explicitly. Adding the 
following statement to driver_mysql_connect() fixes the issue for me:

mysql_options(db->mysql, MYSQL_SET_CHARSET_NAME, "utf8");

I checked this against mysql 5.5.41.

Regards,
Felix

Attachment: mysql_utf8.patch
Description: Binary data

Reply via email to