[TxMt] mysql bundle, password issues, utf8 encoding

Kim Hunter bigkm at optusnet.com.au
Wed Jul 18 09:09:50 UTC 2007


Thanks Chris that patch Fixed my problems

Kim

Chris Adams wrote:
> 
> On Jul 17, 2007, at 1:20 AM, Allan Odgaard wrote:
>> As for not showing the non-UTF-8 characters from your tables 
>> correctly, I am afraid this falls under the “we assume all text is 
>> UTF-8”-policy [1]. Did this work for you with the previous database 
>> browser?
>>
>> I believe some databases have the notion of an encoding, but I also 
>> believe it is wrong most of the time, and encoding could be a 
>> per-table thing, even per row -- so I doubt this will be addressed, 
>> sorry.
> 
> I believe there's a simple fix for this problem. MySQL has a number of 
> places where you set the character set - the server, database, table and 
> individual columns can all be set individually - but there's another 
> less-publicized issue: the MySQL client library defaults to latin1 for 
> communication, which mangles your otherwise clean UTF-8 path. If you run 
> "SHOW VARIABLES LIKE '%character%'" it'll show something like this:
> +--------------------------+------------------------------------------------------------+ 
> 
> | Variable_name            | 
> Value                                                      |
> +--------------------------+------------------------------------------------------------+ 
> 
> | character_set_client     | 
> latin1                                                     |
> | character_set_connection | 
> latin1                                                     |
> | character_set_database   | 
> utf8                                                       |
> | character_set_filesystem | 
> binary                                                     |
> | character_set_results    | 
> latin1                                                     |
> | character_set_server     | 
> utf8                                                       |
> | character_set_system     | 
> utf8                                                       |
> | character_sets_dir       | 
> /usr/local/mysql-5.0.37-osx10.4-i686/share/mysql/charsets/ |
> +--------------------------+------------------------------------------------------------+ 
> 
> 
> The solution for this is for the database client library to issue a "SET 
> NAMES utf8" command after connecting:
> 
> mysql> SET NAMES utf8;
> Query OK, 0 rows affected (0.00 sec)
> mysql> SHOW VARIABLES LIKE 'character_set%';
> +--------------------------+------------------------------------------------------------+ 
> 
> | Variable_name            | 
> Value                                                      |
> +--------------------------+------------------------------------------------------------+ 
> 
> | character_set_client     | 
> utf8                                                       |
> | character_set_connection | 
> utf8                                                       |
> | character_set_database   | 
> utf8                                                       |
> | character_set_filesystem | 
> binary                                                     |
> | character_set_results    | 
> utf8                                                       |
> | character_set_server     | 
> utf8                                                       |
> | character_set_system     | 
> utf8                                                       |
> | character_sets_dir       | 
> /usr/local/mysql-5.0.37-osx10.4-i686/share/mysql/charsets/ |
> +--------------------------+------------------------------------------------------------+ 
> 
> 8 rows in set (0.00 sec)
> 
> This diff should take care of this - I'm not familiar enough with the 
> Ruby libraries to know if there's a better place to do this but it's 
> obviously a trivial patch:
> 
> Index: Support/lib/connectors/mysql.rb
> ===================================================================
> --- Support/lib/connectors/mysql.rb     (revision 7747)
> +++ Support/lib/connectors/mysql.rb     (working copy)
> @@ -98,6 +98,7 @@
>      if args[0] != :INIT then
>        real_connect(*args)
>      end
> +    query('SET NAMES utf8;')
>    end
> 
>    def real_connect(host=nil, user=nil, passwd=nil, db=nil, port=nil, 
> socket=nil, flag=nil)
> 
> 
> Chris
> 
> 
> ------------------------------------------------------------------------
> 
> 
> ______________________________________________________________________
> For new threads USE THIS: textmate at lists.macromates.com
> (threading gets destroyed and the universe will collapse if you don't)
> http://lists.macromates.com/mailman/listinfo/textmate




More information about the textmate mailing list