Re: Fixing broken UTF-8 handling with MySQL driver

2015-03-23 Thread Felix Zandanel

> Am 12.03.2015 um 14:55 schrieb Timo Sirainen :
> 
> On 11 Mar 2015, at 21:31, Felix Zandanel  wrote:
>> 
>> 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 think you can also add to /etc/my.cnf :
> 
> [client]
> default-character-set = utf8

Sorry for the late reply. You were so right, that simple line did the trick. My 
fault, I didn't read the whole charset documentation of MySQL. It's a shame 
that UTF-8 isn't the default setting.

Anyway, as dovecot's internals expect all input strings to be UTF-8, wouldn't 
it be useful to enforce UTF-8 in the database drivers? Using anything else than 
ASCII / UTF-8 for dovecot's MySQL connections doesn't really make sense, I 
think. Also, a "default-character-set = utf8" line in my.cnf is a system wide 
configuration, which might break other software interacting with MySQL—in 
theory.




signature.asc
Description: Message signed with OpenPGP using GPGMail


Re: Fixing broken UTF-8 handling with MySQL driver

2015-03-12 Thread Timo Sirainen
On 11 Mar 2015, at 21:31, Felix Zandanel  wrote:
> 
> 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 think you can also add to /etc/my.cnf :

[client]
default-character-set = utf8